// export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , DifficultyC , def_difficulty ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; export p1 , p2 , p3 , p4 , p5 ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; function read_multiplayer_and_game_parameters ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// if Multiplayer then
   4: LD_OWVAR 4
   8: IFFALSE 62
// begin Your_Side := mp_player_side ;
  10: LD_ADDR_OWVAR 2
  14: PUSH
  15: LD_OWVAR 7
  19: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  20: LD_ADDR_EXP 24
  24: PUSH
  25: LD_OWVAR 17
  29: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  30: LD_ADDR_EXP 22
  34: PUSH
  35: LD_OWVAR 15
  39: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  40: LD_ADDR_EXP 25
  44: PUSH
  45: LD_OWVAR 16
  49: ST_TO_ADDR
// Teams := mp_teams ;
  50: LD_ADDR_EXP 23
  54: PUSH
  55: LD_OWVAR 12
  59: ST_TO_ADDR
// end else
  60: GO 236
// begin Your_Side := 1 ;
  62: LD_ADDR_OWVAR 2
  66: PUSH
  67: LD_INT 1
  69: ST_TO_ADDR
// Side_Positions := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
  70: LD_ADDR_EXP 24
  74: PUSH
  75: LD_INT 0
  77: PUSH
  78: LD_INT 0
  80: PUSH
  81: LD_INT 0
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 0
  92: PUSH
  93: LD_INT 0
  95: PUSH
  96: LD_INT 0
  98: PUSH
  99: EMPTY
 100: LIST
 101: LIST
 102: LIST
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// Side_Teams := [ 1 , 1 , 3 , 4 , 5 , 0 , 0 , 0 ] ;
 109: LD_ADDR_EXP 22
 113: PUSH
 114: LD_INT 1
 116: PUSH
 117: LD_INT 1
 119: PUSH
 120: LD_INT 3
 122: PUSH
 123: LD_INT 4
 125: PUSH
 126: LD_INT 5
 128: PUSH
 129: LD_INT 0
 131: PUSH
 132: LD_INT 0
 134: PUSH
 135: LD_INT 0
 137: PUSH
 138: EMPTY
 139: LIST
 140: LIST
 141: LIST
 142: LIST
 143: LIST
 144: LIST
 145: LIST
 146: LIST
 147: ST_TO_ADDR
// Side_Nations := [ 1 , 2 , 3 , 1 , 2 , 3 , 0 , 0 ] ;
 148: LD_ADDR_EXP 25
 152: PUSH
 153: LD_INT 1
 155: PUSH
 156: LD_INT 2
 158: PUSH
 159: LD_INT 3
 161: PUSH
 162: LD_INT 1
 164: PUSH
 165: LD_INT 2
 167: PUSH
 168: LD_INT 3
 170: PUSH
 171: LD_INT 0
 173: PUSH
 174: LD_INT 0
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// Teams := [ [ 1 ] , [ 2 ] , [ 3 ] , [ 4 ] , [ 5 ] , [ 6 ] ] ;
 187: LD_ADDR_EXP 23
 191: PUSH
 192: LD_INT 1
 194: PUSH
 195: EMPTY
 196: LIST
 197: PUSH
 198: LD_INT 2
 200: PUSH
 201: EMPTY
 202: LIST
 203: PUSH
 204: LD_INT 3
 206: PUSH
 207: EMPTY
 208: LIST
 209: PUSH
 210: LD_INT 4
 212: PUSH
 213: EMPTY
 214: LIST
 215: PUSH
 216: LD_INT 5
 218: PUSH
 219: EMPTY
 220: LIST
 221: PUSH
 222: LD_INT 6
 224: PUSH
 225: EMPTY
 226: LIST
 227: PUSH
 228: EMPTY
 229: LIST
 230: LIST
 231: LIST
 232: LIST
 233: LIST
 234: LIST
 235: ST_TO_ADDR
// end ; for i := 1 to 8 do
 236: LD_ADDR_VAR 0 2
 240: PUSH
 241: DOUBLE
 242: LD_INT 1
 244: DEC
 245: ST_TO_ADDR
 246: LD_INT 8
 248: PUSH
 249: FOR_TO
 250: IFFALSE 288
// if Multiplayer_GetPlayerIsSpec ( i ) then
 252: LD_VAR 0 2
 256: PPUSH
 257: CALL_OW 530
 261: IFFALSE 286
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 263: LD_ADDR_EXP 24
 267: PUSH
 268: LD_EXP 24
 272: PPUSH
 273: LD_VAR 0 2
 277: PPUSH
 278: LD_INT 0
 280: PPUSH
 281: CALL_OW 1
 285: ST_TO_ADDR
 286: GO 249
 288: POP
 289: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 290: LD_ADDR_EXP 27
 294: PUSH
 295: LD_INT 0
 297: PUSH
 298: LD_INT 0
 300: PUSH
 301: LD_INT 0
 303: PUSH
 304: LD_INT 0
 306: PUSH
 307: LD_INT 0
 309: PUSH
 310: LD_INT 0
 312: PUSH
 313: EMPTY
 314: LIST
 315: LIST
 316: LIST
 317: LIST
 318: LIST
 319: LIST
 320: ST_TO_ADDR
// for i := 1 to 8 do
 321: LD_ADDR_VAR 0 2
 325: PUSH
 326: DOUBLE
 327: LD_INT 1
 329: DEC
 330: ST_TO_ADDR
 331: LD_INT 8
 333: PUSH
 334: FOR_TO
 335: IFFALSE 382
// if Side_Positions [ i ] then
 337: LD_EXP 24
 341: PUSH
 342: LD_VAR 0 2
 346: ARRAY
 347: IFFALSE 380
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 349: LD_ADDR_EXP 27
 353: PUSH
 354: LD_EXP 27
 358: PPUSH
 359: LD_EXP 24
 363: PUSH
 364: LD_VAR 0 2
 368: ARRAY
 369: PPUSH
 370: LD_VAR 0 2
 374: PPUSH
 375: CALL_OW 1
 379: ST_TO_ADDR
 380: GO 334
 382: POP
 383: POP
// Team_Game := Side_Teams [ your_side ] ;
 384: LD_ADDR_EXP 26
 388: PUSH
 389: LD_EXP 22
 393: PUSH
 394: LD_OWVAR 2
 398: ARRAY
 399: ST_TO_ADDR
// if Multiplayer then
 400: LD_OWVAR 4
 404: IFFALSE 512
// begin def_base_level := GetMultiplayerSetting ( 0 ) ;
 406: LD_ADDR_EXP 1
 410: PUSH
 411: LD_INT 0
 413: PPUSH
 414: CALL_OW 426
 418: ST_TO_ADDR
// def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 419: LD_ADDR_EXP 2
 423: PUSH
 424: LD_INT 1
 426: PPUSH
 427: CALL_OW 426
 431: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 432: LD_ADDR_EXP 3
 436: PUSH
 437: LD_INT 2
 439: PPUSH
 440: CALL_OW 426
 444: ST_TO_ADDR
// def_starting_resources := GetMultiplayerSetting ( 3 ) ;
 445: LD_ADDR_EXP 4
 449: PUSH
 450: LD_INT 3
 452: PPUSH
 453: CALL_OW 426
 457: ST_TO_ADDR
// def_shipments_density := GetMultiplayerSetting ( 4 ) ;
 458: LD_ADDR_EXP 5
 462: PUSH
 463: LD_INT 4
 465: PPUSH
 466: CALL_OW 426
 470: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 471: LD_ADDR_EXP 6
 475: PUSH
 476: LD_INT 10
 478: PPUSH
 479: CALL_OW 426
 483: ST_TO_ADDR
// def_people_respawning := GetMultiplayerSetting ( 13 ) ;
 484: LD_ADDR_EXP 7
 488: PUSH
 489: LD_INT 13
 491: PPUSH
 492: CALL_OW 426
 496: ST_TO_ADDR
// def_difficulty := GetMultiplayerSetting ( 17 ) ;
 497: LD_ADDR_EXP 21
 501: PUSH
 502: LD_INT 17
 504: PPUSH
 505: CALL_OW 426
 509: ST_TO_ADDR
// end else
 510: GO 572
// begin Randomize ;
 512: CALL_OW 10
// def_base_level := 2 ;
 516: LD_ADDR_EXP 1
 520: PUSH
 521: LD_INT 2
 523: ST_TO_ADDR
// def_amount_of_people := 1 ;
 524: LD_ADDR_EXP 2
 528: PUSH
 529: LD_INT 1
 531: ST_TO_ADDR
// def_skill_level := 1 ;
 532: LD_ADDR_EXP 3
 536: PUSH
 537: LD_INT 1
 539: ST_TO_ADDR
// def_starting_resources := 2 ;
 540: LD_ADDR_EXP 4
 544: PUSH
 545: LD_INT 2
 547: ST_TO_ADDR
// def_shipments_density := 1 ;
 548: LD_ADDR_EXP 5
 552: PUSH
 553: LD_INT 1
 555: ST_TO_ADDR
// def_shared_vision := 1 ;
 556: LD_ADDR_EXP 6
 560: PUSH
 561: LD_INT 1
 563: ST_TO_ADDR
// def_people_respawning := 2 ;
 564: LD_ADDR_EXP 7
 568: PUSH
 569: LD_INT 2
 571: ST_TO_ADDR
// end ; is_depot := [ 0 , 1 , 2 ] [ def_base_level + 1 ] ;
 572: LD_ADDR_EXP 8
 576: PUSH
 577: LD_INT 0
 579: PUSH
 580: LD_INT 1
 582: PUSH
 583: LD_INT 2
 585: PUSH
 586: EMPTY
 587: LIST
 588: LIST
 589: LIST
 590: PUSH
 591: LD_EXP 1
 595: PUSH
 596: LD_INT 1
 598: PLUS
 599: ARRAY
 600: ST_TO_ADDR
// number_of_breastworks := [ 0 , 0 , 2 ] [ def_base_level + 1 ] ;
 601: LD_ADDR_EXP 9
 605: PUSH
 606: LD_INT 0
 608: PUSH
 609: LD_INT 0
 611: PUSH
 612: LD_INT 2
 614: PUSH
 615: EMPTY
 616: LIST
 617: LIST
 618: LIST
 619: PUSH
 620: LD_EXP 1
 624: PUSH
 625: LD_INT 1
 627: PLUS
 628: ARRAY
 629: ST_TO_ADDR
// number_of_people := [ 9 , 12 , 15 , 24 ] [ def_amount_of_people + 1 ] ;
 630: LD_ADDR_EXP 10
 634: PUSH
 635: LD_INT 9
 637: PUSH
 638: LD_INT 12
 640: PUSH
 641: LD_INT 15
 643: PUSH
 644: LD_INT 24
 646: PUSH
 647: EMPTY
 648: LIST
 649: LIST
 650: LIST
 651: LIST
 652: PUSH
 653: LD_EXP 2
 657: PUSH
 658: LD_INT 1
 660: PLUS
 661: ARRAY
 662: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
 663: LD_ADDR_EXP 11
 667: PUSH
 668: LD_INT 3
 670: PUSH
 671: LD_INT 5
 673: PUSH
 674: LD_INT 6
 676: PUSH
 677: LD_INT 7
 679: PUSH
 680: EMPTY
 681: LIST
 682: LIST
 683: LIST
 684: LIST
 685: PUSH
 686: LD_EXP 3
 690: PUSH
 691: LD_INT 1
 693: PLUS
 694: ARRAY
 695: ST_TO_ADDR
// starting_resources := [ [ 0 , 0 , 0 ] , [ 30 , 30 , 0 ] , [ 50 , 50 , 0 ] , [ 80 , 60 , 0 ] ] [ def_starting_resources + 1 ] ;
 696: LD_ADDR_EXP 13
 700: PUSH
 701: LD_INT 0
 703: PUSH
 704: LD_INT 0
 706: PUSH
 707: LD_INT 0
 709: PUSH
 710: EMPTY
 711: LIST
 712: LIST
 713: LIST
 714: PUSH
 715: LD_INT 30
 717: PUSH
 718: LD_INT 30
 720: PUSH
 721: LD_INT 0
 723: PUSH
 724: EMPTY
 725: LIST
 726: LIST
 727: LIST
 728: PUSH
 729: LD_INT 50
 731: PUSH
 732: LD_INT 50
 734: PUSH
 735: LD_INT 0
 737: PUSH
 738: EMPTY
 739: LIST
 740: LIST
 741: LIST
 742: PUSH
 743: LD_INT 80
 745: PUSH
 746: LD_INT 60
 748: PUSH
 749: LD_INT 0
 751: PUSH
 752: EMPTY
 753: LIST
 754: LIST
 755: LIST
 756: PUSH
 757: EMPTY
 758: LIST
 759: LIST
 760: LIST
 761: LIST
 762: PUSH
 763: LD_EXP 4
 767: PUSH
 768: LD_INT 1
 770: PLUS
 771: ARRAY
 772: ST_TO_ADDR
// starting_crates := [ [ 10 ] , [ 7 , 14 ] , [ 6 , 12 , 18 ] , [ 5 , 10 , 15 , 20 ] ] [ def_starting_resources + 1 ] ;
 773: LD_ADDR_EXP 12
 777: PUSH
 778: LD_INT 10
 780: PUSH
 781: EMPTY
 782: LIST
 783: PUSH
 784: LD_INT 7
 786: PUSH
 787: LD_INT 14
 789: PUSH
 790: EMPTY
 791: LIST
 792: LIST
 793: PUSH
 794: LD_INT 6
 796: PUSH
 797: LD_INT 12
 799: PUSH
 800: LD_INT 18
 802: PUSH
 803: EMPTY
 804: LIST
 805: LIST
 806: LIST
 807: PUSH
 808: LD_INT 5
 810: PUSH
 811: LD_INT 10
 813: PUSH
 814: LD_INT 15
 816: PUSH
 817: LD_INT 20
 819: PUSH
 820: EMPTY
 821: LIST
 822: LIST
 823: LIST
 824: LIST
 825: PUSH
 826: EMPTY
 827: LIST
 828: LIST
 829: LIST
 830: LIST
 831: PUSH
 832: LD_EXP 4
 836: PUSH
 837: LD_INT 1
 839: PLUS
 840: ARRAY
 841: ST_TO_ADDR
// shipments_density := [ 150 , 125 , 100 , 50 ] [ def_shipments_density + 1 ] ;
 842: LD_ADDR_EXP 14
 846: PUSH
 847: LD_INT 150
 849: PUSH
 850: LD_INT 125
 852: PUSH
 853: LD_INT 100
 855: PUSH
 856: LD_INT 50
 858: PUSH
 859: EMPTY
 860: LIST
 861: LIST
 862: LIST
 863: LIST
 864: PUSH
 865: LD_EXP 5
 869: PUSH
 870: LD_INT 1
 872: PLUS
 873: ARRAY
 874: ST_TO_ADDR
// respawning_time_min := [ 0 0$0 , 5 5$00 , 3 3$0 ] [ def_people_respawning + 1 ] ;
 875: LD_ADDR_EXP 18
 879: PUSH
 880: LD_INT 0
 882: PUSH
 883: LD_INT 10500
 885: PUSH
 886: LD_INT 6300
 888: PUSH
 889: EMPTY
 890: LIST
 891: LIST
 892: LIST
 893: PUSH
 894: LD_EXP 7
 898: PUSH
 899: LD_INT 1
 901: PLUS
 902: ARRAY
 903: ST_TO_ADDR
// respawning_time_max := [ 0 0$0 , 15 15$00 , 5 5$0 ] [ def_people_respawning + 1 ] ;
 904: LD_ADDR_EXP 19
 908: PUSH
 909: LD_INT 0
 911: PUSH
 912: LD_INT 31500
 914: PUSH
 915: LD_INT 10500
 917: PUSH
 918: EMPTY
 919: LIST
 920: LIST
 921: LIST
 922: PUSH
 923: LD_EXP 7
 927: PUSH
 928: LD_INT 1
 930: PLUS
 931: ARRAY
 932: ST_TO_ADDR
// difficultyC := [ 3 , 5 , 7 , 8 ] [ def_difficulty + 1 ] ;
 933: LD_ADDR_EXP 20
 937: PUSH
 938: LD_INT 3
 940: PUSH
 941: LD_INT 5
 943: PUSH
 944: LD_INT 7
 946: PUSH
 947: LD_INT 8
 949: PUSH
 950: EMPTY
 951: LIST
 952: LIST
 953: LIST
 954: LIST
 955: PUSH
 956: LD_EXP 21
 960: PUSH
 961: LD_INT 1
 963: PLUS
 964: ARRAY
 965: ST_TO_ADDR
// end ;
 966: LD_VAR 0 1
 970: RET
// function init_map ; var i , j ; begin
 971: LD_INT 0
 973: PPUSH
 974: PPUSH
 975: PPUSH
// depot_def := [ [ 16 , 19 , 1 ] , [ 29 , 39 , 0 ] ] ;
 976: LD_ADDR_EXP 28
 980: PUSH
 981: LD_INT 16
 983: PUSH
 984: LD_INT 19
 986: PUSH
 987: LD_INT 1
 989: PUSH
 990: EMPTY
 991: LIST
 992: LIST
 993: LIST
 994: PUSH
 995: LD_INT 29
 997: PUSH
 998: LD_INT 39
1000: PUSH
1001: LD_INT 0
1003: PUSH
1004: EMPTY
1005: LIST
1006: LIST
1007: LIST
1008: PUSH
1009: EMPTY
1010: LIST
1011: LIST
1012: ST_TO_ADDR
// for i in depot_def do
1013: LD_ADDR_VAR 0 2
1017: PUSH
1018: LD_EXP 28
1022: PUSH
1023: FOR_IN
1024: IFFALSE 1098
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 10 ) ] ] ;
1026: LD_ADDR_EXP 30
1030: PUSH
1031: LD_EXP 30
1035: PUSH
1036: LD_VAR 0 2
1040: PUSH
1041: LD_INT 1
1043: ARRAY
1044: PPUSH
1045: LD_VAR 0 2
1049: PUSH
1050: LD_INT 3
1052: ARRAY
1053: PPUSH
1054: LD_INT 10
1056: PPUSH
1057: CALL_OW 272
1061: PUSH
1062: LD_VAR 0 2
1066: PUSH
1067: LD_INT 2
1069: ARRAY
1070: PPUSH
1071: LD_VAR 0 2
1075: PUSH
1076: LD_INT 3
1078: ARRAY
1079: PPUSH
1080: LD_INT 10
1082: PPUSH
1083: CALL_OW 273
1087: PUSH
1088: EMPTY
1089: LIST
1090: LIST
1091: PUSH
1092: EMPTY
1093: LIST
1094: ADD
1095: ST_TO_ADDR
1096: GO 1023
1098: POP
1099: POP
// breastworks_def := [ [ [ 47 , 29 , 4 ] , [ 53 , 41 , 5 ] ] , [ [ 50 , 45 , 5 ] , [ 31 , 47 , 0 ] ] , ] ;
1100: LD_ADDR_EXP 29
1104: PUSH
1105: LD_INT 47
1107: PUSH
1108: LD_INT 29
1110: PUSH
1111: LD_INT 4
1113: PUSH
1114: EMPTY
1115: LIST
1116: LIST
1117: LIST
1118: PUSH
1119: LD_INT 53
1121: PUSH
1122: LD_INT 41
1124: PUSH
1125: LD_INT 5
1127: PUSH
1128: EMPTY
1129: LIST
1130: LIST
1131: LIST
1132: PUSH
1133: EMPTY
1134: LIST
1135: LIST
1136: PUSH
1137: LD_INT 50
1139: PUSH
1140: LD_INT 45
1142: PUSH
1143: LD_INT 5
1145: PUSH
1146: EMPTY
1147: LIST
1148: LIST
1149: LIST
1150: PUSH
1151: LD_INT 31
1153: PUSH
1154: LD_INT 47
1156: PUSH
1157: LD_INT 0
1159: PUSH
1160: EMPTY
1161: LIST
1162: LIST
1163: LIST
1164: PUSH
1165: EMPTY
1166: LIST
1167: LIST
1168: PUSH
1169: EMPTY
1170: LIST
1171: LIST
1172: ST_TO_ADDR
// end ;
1173: LD_VAR 0 1
1177: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
1178: LD_INT 0
1180: PPUSH
1181: PPUSH
1182: PPUSH
// if not Team_Game then
1183: LD_EXP 26
1187: NOT
1188: IFFALSE 1286
// begin for i = 1 to 8 do
1190: LD_ADDR_VAR 0 2
1194: PUSH
1195: DOUBLE
1196: LD_INT 1
1198: DEC
1199: ST_TO_ADDR
1200: LD_INT 8
1202: PUSH
1203: FOR_TO
1204: IFFALSE 1282
// for j = 1 to 8 do
1206: LD_ADDR_VAR 0 3
1210: PUSH
1211: DOUBLE
1212: LD_INT 1
1214: DEC
1215: ST_TO_ADDR
1216: LD_INT 8
1218: PUSH
1219: FOR_TO
1220: IFFALSE 1278
// if i <> j then
1222: LD_VAR 0 2
1226: PUSH
1227: LD_VAR 0 3
1231: NONEQUAL
1232: IFFALSE 1256
// SetAttitude ( i , j , att_enemy , true ) else
1234: LD_VAR 0 2
1238: PPUSH
1239: LD_VAR 0 3
1243: PPUSH
1244: LD_INT 2
1246: PPUSH
1247: LD_INT 1
1249: PPUSH
1250: CALL_OW 80
1254: GO 1276
// SetAttitude ( i , j , att_friend , true ) ;
1256: LD_VAR 0 2
1260: PPUSH
1261: LD_VAR 0 3
1265: PPUSH
1266: LD_INT 1
1268: PPUSH
1269: LD_INT 1
1271: PPUSH
1272: CALL_OW 80
1276: GO 1219
1278: POP
1279: POP
1280: GO 1203
1282: POP
1283: POP
// end else
1284: GO 1461
// begin if def_shared_vision then
1286: LD_EXP 6
1290: IFFALSE 1355
// begin for i in Teams do
1292: LD_ADDR_VAR 0 2
1296: PUSH
1297: LD_EXP 23
1301: PUSH
1302: FOR_IN
1303: IFFALSE 1353
// for j = 2 to i do
1305: LD_ADDR_VAR 0 3
1309: PUSH
1310: DOUBLE
1311: LD_INT 2
1313: DEC
1314: ST_TO_ADDR
1315: LD_VAR 0 2
1319: PUSH
1320: FOR_TO
1321: IFFALSE 1349
// ChangeSideFog ( i [ j ] , i [ 1 ] ) ;
1323: LD_VAR 0 2
1327: PUSH
1328: LD_VAR 0 3
1332: ARRAY
1333: PPUSH
1334: LD_VAR 0 2
1338: PUSH
1339: LD_INT 1
1341: ARRAY
1342: PPUSH
1343: CALL_OW 343
1347: GO 1320
1349: POP
1350: POP
1351: GO 1302
1353: POP
1354: POP
// end ; for i = 1 to 8 do
1355: LD_ADDR_VAR 0 2
1359: PUSH
1360: DOUBLE
1361: LD_INT 1
1363: DEC
1364: ST_TO_ADDR
1365: LD_INT 8
1367: PUSH
1368: FOR_TO
1369: IFFALSE 1459
// for j = 1 to 8 do
1371: LD_ADDR_VAR 0 3
1375: PUSH
1376: DOUBLE
1377: LD_INT 1
1379: DEC
1380: ST_TO_ADDR
1381: LD_INT 8
1383: PUSH
1384: FOR_TO
1385: IFFALSE 1455
// if Side_Teams [ i ] = Side_Teams [ j ] then
1387: LD_EXP 22
1391: PUSH
1392: LD_VAR 0 2
1396: ARRAY
1397: PUSH
1398: LD_EXP 22
1402: PUSH
1403: LD_VAR 0 3
1407: ARRAY
1408: EQUAL
1409: IFFALSE 1433
// SetAttitude ( i , j , att_friend , true ) else
1411: LD_VAR 0 2
1415: PPUSH
1416: LD_VAR 0 3
1420: PPUSH
1421: LD_INT 1
1423: PPUSH
1424: LD_INT 1
1426: PPUSH
1427: CALL_OW 80
1431: GO 1453
// SetAttitude ( i , j , att_enemy , true ) ;
1433: LD_VAR 0 2
1437: PPUSH
1438: LD_VAR 0 3
1442: PPUSH
1443: LD_INT 2
1445: PPUSH
1446: LD_INT 1
1448: PPUSH
1449: CALL_OW 80
1453: GO 1384
1455: POP
1456: POP
1457: GO 1368
1459: POP
1460: POP
// end ; end ;
1461: LD_VAR 0 1
1465: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un ; begin
1466: LD_INT 0
1468: PPUSH
1469: PPUSH
1470: PPUSH
1471: PPUSH
// result := [ ] ;
1472: LD_ADDR_VAR 0 6
1476: PUSH
1477: EMPTY
1478: ST_TO_ADDR
// for i := 1 to count do
1479: LD_ADDR_VAR 0 7
1483: PUSH
1484: DOUBLE
1485: LD_INT 1
1487: DEC
1488: ST_TO_ADDR
1489: LD_VAR 0 1
1493: PUSH
1494: FOR_TO
1495: IFFALSE 1891
// begin uc_direction := Rand ( 0 , 5 ) ;
1497: LD_ADDR_OWVAR 24
1501: PUSH
1502: LD_INT 0
1504: PPUSH
1505: LD_INT 5
1507: PPUSH
1508: CALL_OW 12
1512: ST_TO_ADDR
// if commander then
1513: LD_LOC 1
1517: IFFALSE 1626
// begin hc_name := mp_sides_players_names [ uc_side ] ;
1519: LD_ADDR_OWVAR 26
1523: PUSH
1524: LD_OWVAR 19
1528: PUSH
1529: LD_OWVAR 20
1533: ARRAY
1534: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
1535: LD_INT 1
1537: PPUSH
1538: LD_INT 2
1540: PPUSH
1541: CALL_OW 12
1545: PPUSH
1546: LD_VAR 0 2
1550: PPUSH
1551: LD_EXP 11
1555: PUSH
1556: LD_INT 2
1558: PLUS
1559: PPUSH
1560: CALL_OW 380
// hc_importance := 105 ;
1564: LD_ADDR_OWVAR 32
1568: PUSH
1569: LD_INT 105
1571: ST_TO_ADDR
// commander := false ;
1572: LD_ADDR_LOC 1
1576: PUSH
1577: LD_INT 0
1579: ST_TO_ADDR
// if Multiplayer then
1580: LD_OWVAR 4
1584: IFFALSE 1624
// begin hc_gallery := MULTIAVATARS ;
1586: LD_ADDR_OWVAR 33
1590: PUSH
1591: LD_STRING MULTIAVATARS
1593: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( uc_side ) ;
1594: LD_ADDR_OWVAR 34
1598: PUSH
1599: LD_OWVAR 20
1603: PPUSH
1604: CALL_OW 525
1608: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( uc_side ) ;
1609: LD_ADDR_OWVAR 27
1613: PUSH
1614: LD_OWVAR 20
1618: PPUSH
1619: CALL_OW 526
1623: ST_TO_ADDR
// end ; end else
1624: GO 1689
// begin hc_name :=  ;
1626: LD_ADDR_OWVAR 26
1630: PUSH
1631: LD_STRING 
1633: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
1634: LD_INT 1
1636: PPUSH
1637: LD_INT 2
1639: PPUSH
1640: CALL_OW 12
1644: PPUSH
1645: LD_VAR 0 2
1649: PPUSH
1650: LD_EXP 11
1654: PPUSH
1655: CALL_OW 380
// hc_importance := 0 ;
1659: LD_ADDR_OWVAR 32
1663: PUSH
1664: LD_INT 0
1666: ST_TO_ADDR
// if Multiplayer then
1667: LD_OWVAR 4
1671: IFFALSE 1689
// begin hc_gallery :=  ;
1673: LD_ADDR_OWVAR 33
1677: PUSH
1678: LD_STRING 
1680: ST_TO_ADDR
// hc_face_number := 0 ;
1681: LD_ADDR_OWVAR 34
1685: PUSH
1686: LD_INT 0
1688: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
1689: LD_ADDR_VAR 0 9
1693: PUSH
1694: CALL_OW 44
1698: ST_TO_ADDR
// if global_defined then
1699: LD_LOC 3
1703: IFFALSE 1843
// begin if ( cl = class_soldier ) then
1705: LD_VAR 0 2
1709: PUSH
1710: LD_INT 1
1712: EQUAL
1713: IFFALSE 1733
// j := i + soldiers_created else
1715: LD_ADDR_VAR 0 8
1719: PUSH
1720: LD_VAR 0 7
1724: PUSH
1725: LD_LOC 4
1729: PLUS
1730: ST_TO_ADDR
1731: GO 1743
// j := i ;
1733: LD_ADDR_VAR 0 8
1737: PUSH
1738: LD_VAR 0 7
1742: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
1743: LD_LOC 2
1747: PUSH
1748: LD_VAR 0 2
1752: ARRAY
1753: PUSH
1754: LD_VAR 0 8
1758: ARRAY
1759: PPUSH
1760: LD_VAR 0 9
1764: PPUSH
1765: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
1769: LD_VAR 0 9
1773: PPUSH
1774: LD_INT 2
1776: PPUSH
1777: LD_LOC 2
1781: PUSH
1782: LD_VAR 0 2
1786: ARRAY
1787: PUSH
1788: LD_VAR 0 8
1792: ARRAY
1793: PPUSH
1794: LD_INT 2
1796: PPUSH
1797: CALL_OW 260
1801: PPUSH
1802: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
1806: LD_VAR 0 9
1810: PPUSH
1811: LD_INT 1
1813: PPUSH
1814: LD_LOC 2
1818: PUSH
1819: LD_VAR 0 2
1823: ARRAY
1824: PUSH
1825: LD_VAR 0 8
1829: ARRAY
1830: PPUSH
1831: LD_INT 1
1833: PPUSH
1834: CALL_OW 260
1838: PPUSH
1839: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
1843: LD_VAR 0 9
1847: PPUSH
1848: LD_VAR 0 3
1852: PPUSH
1853: LD_VAR 0 4
1857: PPUSH
1858: LD_VAR 0 5
1862: PPUSH
1863: LD_INT 0
1865: PPUSH
1866: CALL_OW 50
// result := result ^ [ un ] ;
1870: LD_ADDR_VAR 0 6
1874: PUSH
1875: LD_VAR 0 6
1879: PUSH
1880: LD_VAR 0 9
1884: PUSH
1885: EMPTY
1886: LIST
1887: ADD
1888: ST_TO_ADDR
// end ;
1889: GO 1494
1891: POP
1892: POP
// if not global_defined then
1893: LD_LOC 3
1897: NOT
1898: IFFALSE 1976
// if ( global_units >= cl ) then
1900: LD_LOC 2
1904: PUSH
1905: LD_VAR 0 2
1909: GREATEREQUAL
1910: IFFALSE 1951
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
1912: LD_ADDR_LOC 2
1916: PUSH
1917: LD_LOC 2
1921: PPUSH
1922: LD_VAR 0 2
1926: PPUSH
1927: LD_LOC 2
1931: PUSH
1932: LD_VAR 0 2
1936: ARRAY
1937: PUSH
1938: LD_VAR 0 6
1942: ADD
1943: PPUSH
1944: CALL_OW 1
1948: ST_TO_ADDR
1949: GO 1976
// global_units := Replace ( global_units , cl , result ) ;
1951: LD_ADDR_LOC 2
1955: PUSH
1956: LD_LOC 2
1960: PPUSH
1961: LD_VAR 0 2
1965: PPUSH
1966: LD_VAR 0 6
1970: PPUSH
1971: CALL_OW 1
1975: ST_TO_ADDR
// end ;
1976: LD_VAR 0 6
1980: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
1981: LD_INT 0
1983: PPUSH
1984: PPUSH
1985: PPUSH
1986: PPUSH
1987: PPUSH
1988: PPUSH
1989: PPUSH
1990: PPUSH
1991: PPUSH
1992: PPUSH
// pos := Side_Positions [ side ] ;
1993: LD_ADDR_VAR 0 3
1997: PUSH
1998: LD_EXP 24
2002: PUSH
2003: LD_VAR 0 1
2007: ARRAY
2008: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
2009: LD_ADDR_OWVAR 21
2013: PUSH
2014: LD_EXP 25
2018: PUSH
2019: LD_VAR 0 1
2023: ARRAY
2024: ST_TO_ADDR
// uc_side := side ;
2025: LD_ADDR_OWVAR 20
2029: PUSH
2030: LD_VAR 0 1
2034: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
2035: LD_ADDR_VAR 0 4
2039: PUSH
2040: LD_EXP 28
2044: PUSH
2045: LD_VAR 0 3
2049: ARRAY
2050: PUSH
2051: LD_INT 1
2053: ARRAY
2054: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
2055: LD_ADDR_VAR 0 5
2059: PUSH
2060: LD_EXP 28
2064: PUSH
2065: LD_VAR 0 3
2069: ARRAY
2070: PUSH
2071: LD_INT 2
2073: ARRAY
2074: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
2075: LD_ADDR_VAR 0 6
2079: PUSH
2080: LD_EXP 28
2084: PUSH
2085: LD_VAR 0 3
2089: ARRAY
2090: PUSH
2091: LD_INT 3
2093: ARRAY
2094: ST_TO_ADDR
// if is_depot then
2095: LD_EXP 8
2099: IFFALSE 2206
// begin bc_type = b_depot ;
2101: LD_ADDR_OWVAR 42
2105: PUSH
2106: LD_INT 0
2108: ST_TO_ADDR
// dep := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2109: LD_ADDR_VAR 0 11
2113: PUSH
2114: LD_VAR 0 4
2118: PPUSH
2119: LD_VAR 0 5
2123: PPUSH
2124: LD_VAR 0 6
2128: PPUSH
2129: CALL_OW 47
2133: ST_TO_ADDR
// SetBName ( dep , @ & side ) ;
2134: LD_VAR 0 11
2138: PPUSH
2139: LD_STRING @
2141: PUSH
2142: LD_VAR 0 1
2146: STR
2147: PPUSH
2148: CALL_OW 500
// SetResourceType ( GetBase ( dep ) , mat_cans , starting_resources [ mat_cans ] ) ;
2152: LD_VAR 0 11
2156: PPUSH
2157: CALL_OW 274
2161: PPUSH
2162: LD_INT 1
2164: PPUSH
2165: LD_EXP 13
2169: PUSH
2170: LD_INT 1
2172: ARRAY
2173: PPUSH
2174: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_oil , starting_resources [ mat_oil ] ) ;
2178: LD_VAR 0 11
2182: PPUSH
2183: CALL_OW 274
2187: PPUSH
2188: LD_INT 2
2190: PPUSH
2191: LD_EXP 13
2195: PUSH
2196: LD_INT 2
2198: ARRAY
2199: PPUSH
2200: CALL_OW 277
// end else
2204: GO 2350
// begin for i := 1 to 3 do
2206: LD_ADDR_VAR 0 7
2210: PUSH
2211: DOUBLE
2212: LD_INT 1
2214: DEC
2215: ST_TO_ADDR
2216: LD_INT 3
2218: PUSH
2219: FOR_TO
2220: IFFALSE 2348
// begin r := starting_resources [ i ] ;
2222: LD_ADDR_VAR 0 8
2226: PUSH
2227: LD_EXP 13
2231: PUSH
2232: LD_VAR 0 7
2236: ARRAY
2237: ST_TO_ADDR
// while r >= 10 do
2238: LD_VAR 0 8
2242: PUSH
2243: LD_INT 10
2245: GREATEREQUAL
2246: IFFALSE 2346
// if r > 50 then
2248: LD_VAR 0 8
2252: PUSH
2253: LD_INT 50
2255: GREATER
2256: IFFALSE 2302
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
2258: LD_VAR 0 7
2262: PPUSH
2263: LD_INT 5
2265: PPUSH
2266: LD_VAR 0 4
2270: PPUSH
2271: LD_VAR 0 5
2275: PPUSH
2276: LD_INT 4
2278: PPUSH
2279: LD_INT 0
2281: PPUSH
2282: CALL_OW 60
// r := r - 50 ;
2286: LD_ADDR_VAR 0 8
2290: PUSH
2291: LD_VAR 0 8
2295: PUSH
2296: LD_INT 50
2298: MINUS
2299: ST_TO_ADDR
// end else
2300: GO 2344
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
2302: LD_VAR 0 7
2306: PPUSH
2307: LD_VAR 0 8
2311: PUSH
2312: LD_INT 10
2314: DIV
2315: PPUSH
2316: LD_VAR 0 4
2320: PPUSH
2321: LD_VAR 0 5
2325: PPUSH
2326: LD_INT 4
2328: PPUSH
2329: LD_INT 0
2331: PPUSH
2332: CALL_OW 60
// r := 0 ;
2336: LD_ADDR_VAR 0 8
2340: PUSH
2341: LD_INT 0
2343: ST_TO_ADDR
// end ;
2344: GO 2238
// end ;
2346: GO 2219
2348: POP
2349: POP
// end ; for r in starting_crates do
2350: LD_ADDR_VAR 0 8
2354: PUSH
2355: LD_EXP 12
2359: PUSH
2360: FOR_IN
2361: IFFALSE 2393
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
2363: LD_INT 1
2365: PPUSH
2366: LD_INT 5
2368: PPUSH
2369: LD_VAR 0 4
2373: PPUSH
2374: LD_VAR 0 5
2378: PPUSH
2379: LD_VAR 0 8
2383: PPUSH
2384: LD_INT 0
2386: PPUSH
2387: CALL_OW 60
2391: GO 2360
2393: POP
2394: POP
// commander := true ;
2395: LD_ADDR_LOC 1
2399: PUSH
2400: LD_INT 1
2402: ST_TO_ADDR
// soldiers_created := 0 ;
2403: LD_ADDR_LOC 4
2407: PUSH
2408: LD_INT 0
2410: ST_TO_ADDR
// for i := 1 to number_of_breastworks do
2411: LD_ADDR_VAR 0 7
2415: PUSH
2416: DOUBLE
2417: LD_INT 1
2419: DEC
2420: ST_TO_ADDR
2421: LD_EXP 9
2425: PUSH
2426: FOR_TO
2427: IFFALSE 2649
// begin x := breastworks_def [ pos ] [ i ] [ 1 ] ;
2429: LD_ADDR_VAR 0 4
2433: PUSH
2434: LD_EXP 29
2438: PUSH
2439: LD_VAR 0 3
2443: ARRAY
2444: PUSH
2445: LD_VAR 0 7
2449: ARRAY
2450: PUSH
2451: LD_INT 1
2453: ARRAY
2454: ST_TO_ADDR
// y := breastworks_def [ pos ] [ i ] [ 2 ] ;
2455: LD_ADDR_VAR 0 5
2459: PUSH
2460: LD_EXP 29
2464: PUSH
2465: LD_VAR 0 3
2469: ARRAY
2470: PUSH
2471: LD_VAR 0 7
2475: ARRAY
2476: PUSH
2477: LD_INT 2
2479: ARRAY
2480: ST_TO_ADDR
// dir := breastworks_def [ pos ] [ i ] [ 3 ] ;
2481: LD_ADDR_VAR 0 6
2485: PUSH
2486: LD_EXP 29
2490: PUSH
2491: LD_VAR 0 3
2495: ARRAY
2496: PUSH
2497: LD_VAR 0 7
2501: ARRAY
2502: PUSH
2503: LD_INT 3
2505: ARRAY
2506: ST_TO_ADDR
// bc_type := b_breastwork ;
2507: LD_ADDR_OWVAR 42
2511: PUSH
2512: LD_INT 31
2514: ST_TO_ADDR
// br := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2515: LD_ADDR_VAR 0 10
2519: PUSH
2520: LD_VAR 0 4
2524: PPUSH
2525: LD_VAR 0 5
2529: PPUSH
2530: LD_VAR 0 6
2534: PPUSH
2535: CALL_OW 47
2539: ST_TO_ADDR
// x := ShiftX ( x , dir , 2 ) ;
2540: LD_ADDR_VAR 0 4
2544: PUSH
2545: LD_VAR 0 4
2549: PPUSH
2550: LD_VAR 0 6
2554: PPUSH
2555: LD_INT 2
2557: PPUSH
2558: CALL_OW 272
2562: ST_TO_ADDR
// y := ShiftY ( y , dir , 2 ) ;
2563: LD_ADDR_VAR 0 5
2567: PUSH
2568: LD_VAR 0 5
2572: PPUSH
2573: LD_VAR 0 6
2577: PPUSH
2578: LD_INT 2
2580: PPUSH
2581: CALL_OW 273
2585: ST_TO_ADDR
// sol := prepare_people ( 1 , class_soldier , x , y , 0 ) [ 1 ] ;
2586: LD_ADDR_VAR 0 9
2590: PUSH
2591: LD_INT 1
2593: PPUSH
2594: LD_INT 1
2596: PPUSH
2597: LD_VAR 0 4
2601: PPUSH
2602: LD_VAR 0 5
2606: PPUSH
2607: LD_INT 0
2609: PPUSH
2610: CALL 1466 0 5
2614: PUSH
2615: LD_INT 1
2617: ARRAY
2618: ST_TO_ADDR
// soldiers_created := soldiers_created + 1 ;
2619: LD_ADDR_LOC 4
2623: PUSH
2624: LD_LOC 4
2628: PUSH
2629: LD_INT 1
2631: PLUS
2632: ST_TO_ADDR
// ComEnterUnit ( sol , br ) ;
2633: LD_VAR 0 9
2637: PPUSH
2638: LD_VAR 0 10
2642: PPUSH
2643: CALL_OW 120
// end ;
2647: GO 2426
2649: POP
2650: POP
// x := start_def [ pos ] [ 1 ] ;
2651: LD_ADDR_VAR 0 4
2655: PUSH
2656: LD_EXP 30
2660: PUSH
2661: LD_VAR 0 3
2665: ARRAY
2666: PUSH
2667: LD_INT 1
2669: ARRAY
2670: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
2671: LD_ADDR_VAR 0 5
2675: PUSH
2676: LD_EXP 30
2680: PUSH
2681: LD_VAR 0 3
2685: ARRAY
2686: PUSH
2687: LD_INT 2
2689: ARRAY
2690: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
2691: LD_LOC 8
2695: PUSH
2696: LD_EXP 9
2700: MINUS
2701: PPUSH
2702: LD_INT 1
2704: PPUSH
2705: LD_VAR 0 4
2709: PPUSH
2710: LD_VAR 0 5
2714: PPUSH
2715: LD_INT 5
2717: PPUSH
2718: CALL 1466 0 5
// prepare_people ( neng , class_engineer , x , y , 5 ) ;
2722: LD_LOC 5
2726: PPUSH
2727: LD_INT 2
2729: PPUSH
2730: LD_VAR 0 4
2734: PPUSH
2735: LD_VAR 0 5
2739: PPUSH
2740: LD_INT 5
2742: PPUSH
2743: CALL 1466 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
2747: LD_LOC 7
2751: PPUSH
2752: LD_INT 3
2754: PPUSH
2755: LD_VAR 0 4
2759: PPUSH
2760: LD_VAR 0 5
2764: PPUSH
2765: LD_INT 5
2767: PPUSH
2768: CALL 1466 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
2772: LD_LOC 6
2776: PPUSH
2777: LD_INT 4
2779: PPUSH
2780: LD_VAR 0 4
2784: PPUSH
2785: LD_VAR 0 5
2789: PPUSH
2790: LD_INT 5
2792: PPUSH
2793: CALL 1466 0 5
// global_defined := true ;
2797: LD_ADDR_LOC 3
2801: PUSH
2802: LD_INT 1
2804: ST_TO_ADDR
// end ;
2805: LD_VAR 0 2
2809: RET
// function prepare_sides ; var i ; begin
2810: LD_INT 0
2812: PPUSH
2813: PPUSH
// global_units := [ ] ;
2814: LD_ADDR_LOC 2
2818: PUSH
2819: EMPTY
2820: ST_TO_ADDR
// global_defined := false ;
2821: LD_ADDR_LOC 3
2825: PUSH
2826: LD_INT 0
2828: ST_TO_ADDR
// CountClassMembers ;
2829: CALL 2879 0 0
// for i := 1 to 8 do
2833: LD_ADDR_VAR 0 2
2837: PUSH
2838: DOUBLE
2839: LD_INT 1
2841: DEC
2842: ST_TO_ADDR
2843: LD_INT 8
2845: PUSH
2846: FOR_TO
2847: IFFALSE 2872
// if Side_Positions [ i ] then
2849: LD_EXP 24
2853: PUSH
2854: LD_VAR 0 2
2858: ARRAY
2859: IFFALSE 2870
// prepare_side ( i ) ;
2861: LD_VAR 0 2
2865: PPUSH
2866: CALL 1981 0 1
2870: GO 2846
2872: POP
2873: POP
// end ;
2874: LD_VAR 0 1
2878: RET
// function CountClassMembers ; var Mode ; begin
2879: LD_INT 0
2881: PPUSH
2882: PPUSH
// Mode := 1 ;
2883: LD_ADDR_VAR 0 2
2887: PUSH
2888: LD_INT 1
2890: ST_TO_ADDR
// neng := number_of_people ;
2891: LD_ADDR_LOC 5
2895: PUSH
2896: LD_EXP 10
2900: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
2901: LD_ADDR_LOC 8
2905: PUSH
2906: LD_LOC 5
2910: PUSH
2911: LD_INT 4
2913: PUSH
2914: LD_INT 3
2916: PUSH
2917: EMPTY
2918: LIST
2919: LIST
2920: PUSH
2921: LD_VAR 0 2
2925: ARRAY
2926: DIV
2927: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
2928: LD_LOC 8
2932: PUSH
2933: LD_EXP 9
2937: LESS
2938: IFFALSE 2950
// nsol := number_of_breastworks ;
2940: LD_ADDR_LOC 8
2944: PUSH
2945: LD_EXP 9
2949: ST_TO_ADDR
// neng := neng - nsol ;
2950: LD_ADDR_LOC 5
2954: PUSH
2955: LD_LOC 5
2959: PUSH
2960: LD_LOC 8
2964: MINUS
2965: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
2966: LD_ADDR_LOC 6
2970: PUSH
2971: LD_LOC 5
2975: PUSH
2976: LD_INT 3
2978: PUSH
2979: LD_INT 2
2981: PUSH
2982: EMPTY
2983: LIST
2984: LIST
2985: PUSH
2986: LD_VAR 0 2
2990: ARRAY
2991: DIV
2992: ST_TO_ADDR
// if ( nsci < 1 ) then
2993: LD_LOC 6
2997: PUSH
2998: LD_INT 1
3000: LESS
3001: IFFALSE 3011
// nsci := 1 ;
3003: LD_ADDR_LOC 6
3007: PUSH
3008: LD_INT 1
3010: ST_TO_ADDR
// neng := neng - nsci ;
3011: LD_ADDR_LOC 5
3015: PUSH
3016: LD_LOC 5
3020: PUSH
3021: LD_LOC 6
3025: MINUS
3026: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
3027: LD_ADDR_LOC 7
3031: PUSH
3032: LD_LOC 5
3036: PUSH
3037: LD_INT 2
3039: DIV
3040: PUSH
3041: LD_INT 0
3043: PUSH
3044: EMPTY
3045: LIST
3046: LIST
3047: PUSH
3048: LD_VAR 0 2
3052: ARRAY
3053: ST_TO_ADDR
// neng := neng - nmech ;
3054: LD_ADDR_LOC 5
3058: PUSH
3059: LD_LOC 5
3063: PUSH
3064: LD_LOC 7
3068: MINUS
3069: ST_TO_ADDR
// if ( neng < 1 ) then
3070: LD_LOC 5
3074: PUSH
3075: LD_INT 1
3077: LESS
3078: IFFALSE 3088
// neng := 1 ;
3080: LD_ADDR_LOC 5
3084: PUSH
3085: LD_INT 1
3087: ST_TO_ADDR
// end ;
3088: LD_VAR 0 1
3092: RET
// starting var i ; begin RandomizeAll ;
3093: CALL_OW 11
// enable_human_prediction := true ;
3097: LD_ADDR_OWVAR 51
3101: PUSH
3102: LD_INT 1
3104: ST_TO_ADDR
// mp_selectmsg := true ;
3105: LD_ADDR_OWVAR 13
3109: PUSH
3110: LD_INT 1
3112: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
3113: CALL 0 0 0
// init_map ;
3117: CALL 971 0 0
// init_respawning ;
3121: CALL 3268 0 0
// set_shared_visions_and_alliances ;
3125: CALL 1178 0 0
// ResetFog ;
3129: CALL_OW 335
// prepare_sides ;
3133: CALL 2810 0 0
// music_nat := Side_Nations [ your_side ] ;
3137: LD_ADDR_OWVAR 71
3141: PUSH
3142: LD_EXP 25
3146: PUSH
3147: LD_OWVAR 2
3151: ARRAY
3152: ST_TO_ADDR
// SetSide ( rugeneral1 , GetSide ( FilterUnitsInArea ( Player1Spawn , [ f_type , unit_human ] ) [ 1 ] ) ) ;
3153: LD_INT 174
3155: PPUSH
3156: LD_INT 5
3158: PPUSH
3159: LD_INT 21
3161: PUSH
3162: LD_INT 1
3164: PUSH
3165: EMPTY
3166: LIST
3167: LIST
3168: PPUSH
3169: CALL_OW 70
3173: PUSH
3174: LD_INT 1
3176: ARRAY
3177: PPUSH
3178: CALL_OW 255
3182: PPUSH
3183: CALL_OW 235
// SetSide ( rugeneral2 , GetSide ( FilterUnitsInArea ( Player2Spawn , [ f_type , unit_human ] ) [ 1 ] ) ) ;
3187: LD_INT 176
3189: PPUSH
3190: LD_INT 6
3192: PPUSH
3193: LD_INT 21
3195: PUSH
3196: LD_INT 1
3198: PUSH
3199: EMPTY
3200: LIST
3201: LIST
3202: PPUSH
3203: CALL_OW 70
3207: PUSH
3208: LD_INT 1
3210: ARRAY
3211: PPUSH
3212: CALL_OW 255
3216: PPUSH
3217: CALL_OW 235
// CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
3221: LD_EXP 30
3225: PUSH
3226: LD_EXP 24
3230: PUSH
3231: LD_OWVAR 2
3235: ARRAY
3236: ARRAY
3237: PUSH
3238: LD_INT 1
3240: ARRAY
3241: PPUSH
3242: LD_EXP 30
3246: PUSH
3247: LD_EXP 24
3251: PUSH
3252: LD_OWVAR 2
3256: ARRAY
3257: ARRAY
3258: PUSH
3259: LD_INT 2
3261: ARRAY
3262: PPUSH
3263: CALL_OW 86
// end ; end_of_file
3267: END
// var respawn , inqueue ; export function init_respawning ; begin
3268: LD_INT 0
3270: PPUSH
// respawn := Rand ( 1 , 8 ) ;
3271: LD_ADDR_LOC 9
3275: PUSH
3276: LD_INT 1
3278: PPUSH
3279: LD_INT 8
3281: PPUSH
3282: CALL_OW 12
3286: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
3287: LD_ADDR_LOC 10
3291: PUSH
3292: LD_INT 0
3294: PUSH
3295: LD_INT 0
3297: PUSH
3298: LD_INT 0
3300: PUSH
3301: LD_INT 0
3303: PUSH
3304: LD_INT 0
3306: PUSH
3307: LD_INT 0
3309: PUSH
3310: LD_INT 0
3312: PUSH
3313: LD_INT 0
3315: PUSH
3316: EMPTY
3317: LIST
3318: LIST
3319: LIST
3320: LIST
3321: LIST
3322: LIST
3323: LIST
3324: LIST
3325: ST_TO_ADDR
// end ;
3326: LD_VAR 0 1
3330: RET
// every 0 0$1 + 0 0$0.5 do var n , dep , aktresp ;
3331: GO 3333
3333: DISABLE
3334: LD_INT 0
3336: PPUSH
3337: PPUSH
3338: PPUSH
// begin if respawning_time_max = 0 then
3339: LD_EXP 19
3343: PUSH
3344: LD_INT 0
3346: EQUAL
3347: IFFALSE 3351
// exit ;
3349: GO 3756
// if respawn = 8 then
3351: LD_LOC 9
3355: PUSH
3356: LD_INT 8
3358: EQUAL
3359: IFFALSE 3371
// respawn := 1 else
3361: LD_ADDR_LOC 9
3365: PUSH
3366: LD_INT 1
3368: ST_TO_ADDR
3369: GO 3385
// respawn := respawn + 1 ;
3371: LD_ADDR_LOC 9
3375: PUSH
3376: LD_LOC 9
3380: PUSH
3381: LD_INT 1
3383: PLUS
3384: ST_TO_ADDR
// if Side_Positions [ respawn ] and not inqueue [ respawn ] then
3385: LD_EXP 24
3389: PUSH
3390: LD_LOC 9
3394: ARRAY
3395: PUSH
3396: LD_LOC 10
3400: PUSH
3401: LD_LOC 9
3405: ARRAY
3406: NOT
3407: AND
3408: IFFALSE 3755
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
3410: LD_ADDR_VAR 0 1
3414: PUSH
3415: LD_INT 21
3417: PUSH
3418: LD_INT 1
3420: PUSH
3421: EMPTY
3422: LIST
3423: LIST
3424: PUSH
3425: LD_INT 22
3427: PUSH
3428: LD_LOC 9
3432: PUSH
3433: EMPTY
3434: LIST
3435: LIST
3436: PUSH
3437: LD_INT 3
3439: PUSH
3440: LD_INT 23
3442: PUSH
3443: LD_INT 0
3445: PUSH
3446: EMPTY
3447: LIST
3448: LIST
3449: PUSH
3450: EMPTY
3451: LIST
3452: LIST
3453: LIST
3454: LIST
3455: PPUSH
3456: CALL_OW 69
3460: ST_TO_ADDR
// if n < number_of_people then
3461: LD_VAR 0 1
3465: PUSH
3466: LD_EXP 10
3470: LESS
3471: IFFALSE 3752
// begin dep := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_ok ] , [ f_side , respawn ] ] ) ;
3473: LD_ADDR_VAR 0 2
3477: PUSH
3478: LD_INT 21
3480: PUSH
3481: LD_INT 3
3483: PUSH
3484: EMPTY
3485: LIST
3486: LIST
3487: PUSH
3488: LD_INT 2
3490: PUSH
3491: LD_INT 30
3493: PUSH
3494: LD_INT 0
3496: PUSH
3497: EMPTY
3498: LIST
3499: LIST
3500: PUSH
3501: LD_INT 30
3503: PUSH
3504: LD_INT 1
3506: PUSH
3507: EMPTY
3508: LIST
3509: LIST
3510: PUSH
3511: EMPTY
3512: LIST
3513: LIST
3514: LIST
3515: PUSH
3516: LD_INT 50
3518: PUSH
3519: EMPTY
3520: LIST
3521: PUSH
3522: LD_INT 22
3524: PUSH
3525: LD_LOC 9
3529: PUSH
3530: EMPTY
3531: LIST
3532: LIST
3533: PUSH
3534: EMPTY
3535: LIST
3536: LIST
3537: LIST
3538: LIST
3539: PPUSH
3540: CALL_OW 69
3544: ST_TO_ADDR
// if dep then
3545: LD_VAR 0 2
3549: IFFALSE 3749
// begin aktresp := respawn ;
3551: LD_ADDR_VAR 0 3
3555: PUSH
3556: LD_LOC 9
3560: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , true ) ;
3561: LD_ADDR_LOC 10
3565: PUSH
3566: LD_LOC 10
3570: PPUSH
3571: LD_VAR 0 3
3575: PPUSH
3576: LD_INT 1
3578: PPUSH
3579: CALL_OW 1
3583: ST_TO_ADDR
// enable ;
3584: ENABLE
// wait ( rand ( respawning_time_min , respawning_time_max ) ) ;
3585: LD_EXP 18
3589: PPUSH
3590: LD_EXP 19
3594: PPUSH
3595: CALL_OW 12
3599: PPUSH
3600: CALL_OW 67
// inqueue := Replace ( inqueue , aktresp , false ) ;
3604: LD_ADDR_LOC 10
3608: PUSH
3609: LD_LOC 10
3613: PPUSH
3614: LD_VAR 0 3
3618: PPUSH
3619: LD_INT 0
3621: PPUSH
3622: CALL_OW 1
3626: ST_TO_ADDR
// hc_name :=  ;
3627: LD_ADDR_OWVAR 26
3631: PUSH
3632: LD_STRING 
3634: ST_TO_ADDR
// hc_importance := 0 ;
3635: LD_ADDR_OWVAR 32
3639: PUSH
3640: LD_INT 0
3642: ST_TO_ADDR
// PrepareHuman ( 0 , 0 , skill_level div 2 ) ;
3643: LD_INT 0
3645: PPUSH
3646: LD_INT 0
3648: PPUSH
3649: LD_EXP 11
3653: PUSH
3654: LD_INT 2
3656: DIV
3657: PPUSH
3658: CALL_OW 380
// uc_nation := Side_Nations [ aktresp ] ;
3662: LD_ADDR_OWVAR 21
3666: PUSH
3667: LD_EXP 25
3671: PUSH
3672: LD_VAR 0 3
3676: ARRAY
3677: ST_TO_ADDR
// uc_side := aktresp ;
3678: LD_ADDR_OWVAR 20
3682: PUSH
3683: LD_VAR 0 3
3687: ST_TO_ADDR
// dep := dep [ Rand ( 1 , dep ) ] ;
3688: LD_ADDR_VAR 0 2
3692: PUSH
3693: LD_VAR 0 2
3697: PUSH
3698: LD_INT 1
3700: PPUSH
3701: LD_VAR 0 2
3705: PPUSH
3706: CALL_OW 12
3710: ARRAY
3711: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( dep ) , GetY ( dep ) , 7 , true ) ;
3712: CALL_OW 44
3716: PPUSH
3717: LD_VAR 0 2
3721: PPUSH
3722: CALL_OW 250
3726: PPUSH
3727: LD_VAR 0 2
3731: PPUSH
3732: CALL_OW 251
3736: PPUSH
3737: LD_INT 7
3739: PPUSH
3740: LD_INT 1
3742: PPUSH
3743: CALL_OW 50
// end else
3747: GO 3750
// enable ;
3749: ENABLE
// end else
3750: GO 3753
// enable ;
3752: ENABLE
// end else
3753: GO 3756
// enable ;
3755: ENABLE
// end ; end_of_file
3756: PPOPN 3
3758: END
// on VehicleConstructed ( un , fac ) do var i , l ;
3759: LD_INT 0
3761: PPUSH
3762: PPUSH
// begin if fac = ArFact then
3763: LD_VAR 0 2
3767: PUSH
3768: LD_INT 5
3770: EQUAL
3771: IFFALSE 3861
// if GetSide ( un ) = randomedColors [ 2 ] then
3773: LD_VAR 0 1
3777: PPUSH
3778: CALL_OW 255
3782: PUSH
3783: LD_EXP 42
3787: PUSH
3788: LD_INT 2
3790: ARRAY
3791: EQUAL
3792: IFFALSE 3861
// begin if un in FilterAllUnits ( [ [ f_side , randomedColors [ 2 ] ] , [ f_type , unit_vehicle ] , [ f_control , control_remote ] ] ) then
3794: LD_VAR 0 1
3798: PUSH
3799: LD_INT 22
3801: PUSH
3802: LD_EXP 42
3806: PUSH
3807: LD_INT 2
3809: ARRAY
3810: PUSH
3811: EMPTY
3812: LIST
3813: LIST
3814: PUSH
3815: LD_INT 21
3817: PUSH
3818: LD_INT 2
3820: PUSH
3821: EMPTY
3822: LIST
3823: LIST
3824: PUSH
3825: LD_INT 33
3827: PUSH
3828: LD_INT 2
3830: PUSH
3831: EMPTY
3832: LIST
3833: LIST
3834: PUSH
3835: EMPTY
3836: LIST
3837: LIST
3838: LIST
3839: PPUSH
3840: CALL_OW 69
3844: IN
3845: IFFALSE 3861
// begin LinkVehicleToHuman ( un , ArControler ) ;
3847: LD_VAR 0 1
3851: PPUSH
3852: LD_EXP 45
3856: PPUSH
3857: CALL_OW 53
// end ; end ; if fac = LeFact then
3861: LD_VAR 0 2
3865: PUSH
3866: LD_INT 26
3868: EQUAL
3869: IFFALSE 3959
// if GetSide ( un ) = randomedColors [ 3 ] then
3871: LD_VAR 0 1
3875: PPUSH
3876: CALL_OW 255
3880: PUSH
3881: LD_EXP 42
3885: PUSH
3886: LD_INT 3
3888: ARRAY
3889: EQUAL
3890: IFFALSE 3959
// begin if un in FilterAllUnits ( [ [ f_side , randomedColors [ 3 ] ] , [ f_type , unit_vehicle ] , [ f_control , control_remote ] ] ) then
3892: LD_VAR 0 1
3896: PUSH
3897: LD_INT 22
3899: PUSH
3900: LD_EXP 42
3904: PUSH
3905: LD_INT 3
3907: ARRAY
3908: PUSH
3909: EMPTY
3910: LIST
3911: LIST
3912: PUSH
3913: LD_INT 21
3915: PUSH
3916: LD_INT 2
3918: PUSH
3919: EMPTY
3920: LIST
3921: LIST
3922: PUSH
3923: LD_INT 33
3925: PUSH
3926: LD_INT 2
3928: PUSH
3929: EMPTY
3930: LIST
3931: LIST
3932: PUSH
3933: EMPTY
3934: LIST
3935: LIST
3936: LIST
3937: PPUSH
3938: CALL_OW 69
3942: IN
3943: IFFALSE 3959
// begin LinkVehicleToHuman ( un , LegControler ) ;
3945: LD_VAR 0 1
3949: PPUSH
3950: LD_EXP 46
3954: PPUSH
3955: CALL_OW 53
// end ; end ; end ; end_of_file
3959: PPOPN 4
3961: END
// every 1 1$0 + 0 0$0.3 marked 10 do
3962: GO 3964
3964: DISABLE
// begin CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
3965: LD_INT 4
3967: PPUSH
3968: LD_INT 5
3970: PPUSH
3971: CALL_OW 12
3975: PPUSH
3976: LD_INT 1
3978: PPUSH
3979: CALL_OW 57
// enable ;
3983: ENABLE
// end ;
3984: END
// every 0 0$1 + 0 0$0.6 marked 10 do var i , amount ;
3985: GO 3987
3987: DISABLE
3988: LD_INT 0
3990: PPUSH
3991: PPUSH
// begin case tick of 1 .. 1 1$0 :
3992: LD_OWVAR 1
3996: PUSH
3997: LD_INT 1
3999: DOUBLE
4000: GREATEREQUAL
4001: IFFALSE 4009
4003: LD_INT 2100
4005: DOUBLE
4006: LESSEQUAL
4007: IFTRUE 4011
4009: GO 4039
4011: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$10 , 0 0$30 ) ) ; 1 1$0 + 1 .. 5 5$0 :
4012: LD_EXP 14
4016: PUSH
4017: LD_INT 100
4019: DIVREAL
4020: PUSH
4021: LD_INT 350
4023: PPUSH
4024: LD_INT 1050
4026: PPUSH
4027: CALL_OW 12
4031: MUL
4032: PPUSH
4033: CALL_OW 67
4037: GO 4341
4039: LD_INT 2100
4041: PUSH
4042: LD_INT 1
4044: PLUS
4045: DOUBLE
4046: GREATEREQUAL
4047: IFFALSE 4055
4049: LD_INT 10500
4051: DOUBLE
4052: LESSEQUAL
4053: IFTRUE 4057
4055: GO 4085
4057: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$30 , 0 0$45 ) ) ; 5 5$0 + 1 .. 10 10$0 :
4058: LD_EXP 14
4062: PUSH
4063: LD_INT 100
4065: DIVREAL
4066: PUSH
4067: LD_INT 1050
4069: PPUSH
4070: LD_INT 1575
4072: PPUSH
4073: CALL_OW 12
4077: MUL
4078: PPUSH
4079: CALL_OW 67
4083: GO 4341
4085: LD_INT 10500
4087: PUSH
4088: LD_INT 1
4090: PLUS
4091: DOUBLE
4092: GREATEREQUAL
4093: IFFALSE 4101
4095: LD_INT 21000
4097: DOUBLE
4098: LESSEQUAL
4099: IFTRUE 4103
4101: GO 4131
4103: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$45 , 1 1$0 ) ) ; 10 10$0 + 1 .. 20 20$0 :
4104: LD_EXP 14
4108: PUSH
4109: LD_INT 100
4111: DIVREAL
4112: PUSH
4113: LD_INT 1575
4115: PPUSH
4116: LD_INT 2100
4118: PPUSH
4119: CALL_OW 12
4123: MUL
4124: PPUSH
4125: CALL_OW 67
4129: GO 4341
4131: LD_INT 21000
4133: PUSH
4134: LD_INT 1
4136: PLUS
4137: DOUBLE
4138: GREATEREQUAL
4139: IFFALSE 4147
4141: LD_INT 42000
4143: DOUBLE
4144: LESSEQUAL
4145: IFTRUE 4149
4147: GO 4177
4149: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$0 , 1 1$15 ) ) ; 20 20$0 + 1 .. 30 30$0 :
4150: LD_EXP 14
4154: PUSH
4155: LD_INT 100
4157: DIVREAL
4158: PUSH
4159: LD_INT 2100
4161: PPUSH
4162: LD_INT 2625
4164: PPUSH
4165: CALL_OW 12
4169: MUL
4170: PPUSH
4171: CALL_OW 67
4175: GO 4341
4177: LD_INT 42000
4179: PUSH
4180: LD_INT 1
4182: PLUS
4183: DOUBLE
4184: GREATEREQUAL
4185: IFFALSE 4193
4187: LD_INT 63000
4189: DOUBLE
4190: LESSEQUAL
4191: IFTRUE 4195
4193: GO 4223
4195: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$15 , 1 1$30 ) ) ; 30 30$0 + 1 .. 50 50$0 :
4196: LD_EXP 14
4200: PUSH
4201: LD_INT 100
4203: DIVREAL
4204: PUSH
4205: LD_INT 2625
4207: PPUSH
4208: LD_INT 3150
4210: PPUSH
4211: CALL_OW 12
4215: MUL
4216: PPUSH
4217: CALL_OW 67
4221: GO 4341
4223: LD_INT 63000
4225: PUSH
4226: LD_INT 1
4228: PLUS
4229: DOUBLE
4230: GREATEREQUAL
4231: IFFALSE 4239
4233: LD_INT 105000
4235: DOUBLE
4236: LESSEQUAL
4237: IFTRUE 4241
4239: GO 4269
4241: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$30 , 1 1$45 ) ) ; 50 50$0 + 1 .. 300 300$0 :
4242: LD_EXP 14
4246: PUSH
4247: LD_INT 100
4249: DIVREAL
4250: PUSH
4251: LD_INT 3150
4253: PPUSH
4254: LD_INT 3675
4256: PPUSH
4257: CALL_OW 12
4261: MUL
4262: PPUSH
4263: CALL_OW 67
4267: GO 4341
4269: LD_INT 105000
4271: PUSH
4272: LD_INT 1
4274: PLUS
4275: DOUBLE
4276: GREATEREQUAL
4277: IFFALSE 4285
4279: LD_INT 630000
4281: DOUBLE
4282: LESSEQUAL
4283: IFTRUE 4287
4285: GO 4315
4287: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$45 , 2 2$0 ) ) ; else
4288: LD_EXP 14
4292: PUSH
4293: LD_INT 100
4295: DIVREAL
4296: PUSH
4297: LD_INT 3675
4299: PPUSH
4300: LD_INT 4200
4302: PPUSH
4303: CALL_OW 12
4307: MUL
4308: PPUSH
4309: CALL_OW 67
4313: GO 4341
4315: POP
// Wait ( shipments_density / 100 * Rand ( 2 2$0 , 2 2$30 ) ) ; end ;
4316: LD_EXP 14
4320: PUSH
4321: LD_INT 100
4323: DIVREAL
4324: PUSH
4325: LD_INT 4200
4327: PPUSH
4328: LD_INT 5250
4330: PPUSH
4331: CALL_OW 12
4335: MUL
4336: PPUSH
4337: CALL_OW 67
// amount := Rand ( 3 , 5 ) ;
4341: LD_ADDR_VAR 0 2
4345: PUSH
4346: LD_INT 3
4348: PPUSH
4349: LD_INT 5
4351: PPUSH
4352: CALL_OW 12
4356: ST_TO_ADDR
// for i in ( Side_Positions diff [ 0 ] ) do
4357: LD_ADDR_VAR 0 1
4361: PUSH
4362: LD_EXP 24
4366: PUSH
4367: LD_INT 0
4369: PUSH
4370: EMPTY
4371: LIST
4372: DIFF
4373: PUSH
4374: FOR_IN
4375: IFFALSE 4424
// CreateCratesXYR ( amount , start_def [ i ] [ 1 ] , start_def [ i ] [ 2 ] , 20 , true ) ;
4377: LD_VAR 0 2
4381: PPUSH
4382: LD_EXP 30
4386: PUSH
4387: LD_VAR 0 1
4391: ARRAY
4392: PUSH
4393: LD_INT 1
4395: ARRAY
4396: PPUSH
4397: LD_EXP 30
4401: PUSH
4402: LD_VAR 0 1
4406: ARRAY
4407: PUSH
4408: LD_INT 2
4410: ARRAY
4411: PPUSH
4412: LD_INT 20
4414: PPUSH
4415: LD_INT 1
4417: PPUSH
4418: CALL_OW 56
4422: GO 4374
4424: POP
4425: POP
// enable ;
4426: ENABLE
// end ; end_of_file
4427: PPOPN 2
4429: END
// function apeman_init ; begin
4430: LD_INT 0
4432: PPUSH
// uc_side := 0 ;
4433: LD_ADDR_OWVAR 20
4437: PUSH
4438: LD_INT 0
4440: ST_TO_ADDR
// uc_nation := nation_nature ;
4441: LD_ADDR_OWVAR 21
4445: PUSH
4446: LD_INT 0
4448: ST_TO_ADDR
// hc_class := class_apeman ;
4449: LD_ADDR_OWVAR 28
4453: PUSH
4454: LD_INT 12
4456: ST_TO_ADDR
// hc_basic_skills := [ 1 , 1 , 1 , 1 ] ;
4457: LD_ADDR_OWVAR 30
4461: PUSH
4462: LD_INT 1
4464: PUSH
4465: LD_INT 1
4467: PUSH
4468: LD_INT 1
4470: PUSH
4471: LD_INT 1
4473: PUSH
4474: EMPTY
4475: LIST
4476: LIST
4477: LIST
4478: LIST
4479: ST_TO_ADDR
// hc_skills := [ 1 , 1 , 1 , 1 ] ;
4480: LD_ADDR_OWVAR 31
4484: PUSH
4485: LD_INT 1
4487: PUSH
4488: LD_INT 1
4490: PUSH
4491: LD_INT 1
4493: PUSH
4494: LD_INT 1
4496: PUSH
4497: EMPTY
4498: LIST
4499: LIST
4500: LIST
4501: LIST
4502: ST_TO_ADDR
// hc_attr := [ 10 , 12 ] ;
4503: LD_ADDR_OWVAR 29
4507: PUSH
4508: LD_INT 10
4510: PUSH
4511: LD_INT 12
4513: PUSH
4514: EMPTY
4515: LIST
4516: LIST
4517: ST_TO_ADDR
// hc_sex := sex_male ;
4518: LD_ADDR_OWVAR 27
4522: PUSH
4523: LD_INT 1
4525: ST_TO_ADDR
// hc_importance := 0 ;
4526: LD_ADDR_OWVAR 32
4530: PUSH
4531: LD_INT 0
4533: ST_TO_ADDR
// hc_agressivity := Rand ( - 20 , 20 ) ;
4534: LD_ADDR_OWVAR 35
4538: PUSH
4539: LD_INT 20
4541: NEG
4542: PPUSH
4543: LD_INT 20
4545: PPUSH
4546: CALL_OW 12
4550: ST_TO_ADDR
// end ;
4551: LD_VAR 0 1
4555: RET
// function prepare_apemen ; var i , j , un , ape , first , d1 , d2 ; begin
4556: LD_INT 0
4558: PPUSH
4559: PPUSH
4560: PPUSH
4561: PPUSH
4562: PPUSH
4563: PPUSH
4564: PPUSH
4565: PPUSH
// if not amount_of_apemen then
4566: LD_EXP 16
4570: NOT
4571: IFFALSE 4575
// exit ;
4573: GO 4675
// ape := 0 ;
4575: LD_ADDR_VAR 0 5
4579: PUSH
4580: LD_INT 0
4582: ST_TO_ADDR
// repeat Wait ( ( ape + 1 ) * Rand ( 0 0$10 , 1 1$0 ) ) ;
4583: LD_VAR 0 5
4587: PUSH
4588: LD_INT 1
4590: PLUS
4591: PUSH
4592: LD_INT 350
4594: PPUSH
4595: LD_INT 2100
4597: PPUSH
4598: CALL_OW 12
4602: MUL
4603: PPUSH
4604: CALL_OW 67
// apeman_init ;
4608: CALL 4430 0 0
// PlaceUnitArea ( CreateHuman , Base1ApeArea , false ) ;
4612: CALL_OW 44
4616: PPUSH
4617: LD_INT 9
4619: PPUSH
4620: LD_INT 0
4622: PPUSH
4623: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base2ApeArea , false ) ;
4627: CALL_OW 44
4631: PPUSH
4632: LD_INT 10
4634: PPUSH
4635: LD_INT 0
4637: PPUSH
4638: CALL_OW 49
// Wait ( 3 ) ;
4642: LD_INT 3
4644: PPUSH
4645: CALL_OW 67
// ape := ape + 1 ;
4649: LD_ADDR_VAR 0 5
4653: PUSH
4654: LD_VAR 0 5
4658: PUSH
4659: LD_INT 1
4661: PLUS
4662: ST_TO_ADDR
// until ape >= amount_of_apemen ;
4663: LD_VAR 0 5
4667: PUSH
4668: LD_EXP 16
4672: GREATEREQUAL
4673: IFFALSE 4583
// end ;
4675: LD_VAR 0 1
4679: RET
// every 0 0$15 do
4680: GO 4682
4682: DISABLE
// begin prepare_apemen ;
4683: CALL 4556 0 0
// end ; end_of_file
4687: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
4688: LD_INT 0
4690: PPUSH
4691: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
4692: LD_ADDR_VAR 0 2
4696: PUSH
4697: LD_STRING #Multi1x1-Time
4699: PUSH
4700: LD_OWVAR 1
4704: PUSH
4705: EMPTY
4706: LIST
4707: LIST
4708: ST_TO_ADDR
// if ( ExtraStrings ) then
4709: LD_EXP 41
4713: IFFALSE 4735
// AllStrings := AllStrings ^  ^ ExtraStrings ;
4715: LD_ADDR_VAR 0 2
4719: PUSH
4720: LD_VAR 0 2
4724: PUSH
4725: LD_STRING 
4727: ADD
4728: PUSH
4729: LD_EXP 41
4733: ADD
4734: ST_TO_ADDR
// Display_Strings := AllStrings ;
4735: LD_ADDR_OWVAR 47
4739: PUSH
4740: LD_VAR 0 2
4744: ST_TO_ADDR
// end ;
4745: LD_VAR 0 1
4749: RET
// every 0 0$1 do
4750: GO 4752
4752: DISABLE
// begin ShowTimer ;
4753: CALL 4688 0 0
// enable ;
4757: ENABLE
// end ; end_of_file
4758: END
// export randomedColors ; every 0 0$3 do var i ;
4759: GO 4761
4761: DISABLE
4762: LD_INT 0
4764: PPUSH
// begin for i in FilterUnitsInArea ( SamarkandBase , [ f_side , 0 ] ) do
4765: LD_ADDR_VAR 0 1
4769: PUSH
4770: LD_INT 3
4772: PPUSH
4773: LD_INT 22
4775: PUSH
4776: LD_INT 0
4778: PUSH
4779: EMPTY
4780: LIST
4781: LIST
4782: PPUSH
4783: CALL_OW 70
4787: PUSH
4788: FOR_IN
4789: IFFALSE 4811
// begin SetSide ( i , randomedColors [ 2 ] ) ;
4791: LD_VAR 0 1
4795: PPUSH
4796: LD_EXP 42
4800: PUSH
4801: LD_INT 2
4803: ARRAY
4804: PPUSH
4805: CALL_OW 235
// end ;
4809: GO 4788
4811: POP
4812: POP
// for i in FilterUnitsInArea ( LegionBase , [ f_side , 0 ] ) do
4813: LD_ADDR_VAR 0 1
4817: PUSH
4818: LD_INT 4
4820: PPUSH
4821: LD_INT 22
4823: PUSH
4824: LD_INT 0
4826: PUSH
4827: EMPTY
4828: LIST
4829: LIST
4830: PPUSH
4831: CALL_OW 70
4835: PUSH
4836: FOR_IN
4837: IFFALSE 4859
// begin SetSide ( i , randomedColors [ 3 ] ) ;
4839: LD_VAR 0 1
4843: PPUSH
4844: LD_EXP 42
4848: PUSH
4849: LD_INT 3
4851: ARRAY
4852: PPUSH
4853: CALL_OW 235
// end ;
4857: GO 4836
4859: POP
4860: POP
// end ;
4861: PPOPN 1
4863: END
// every 0 0$1 do
4864: GO 4866
4866: DISABLE
// begin MultiplayerColorCheck ;
4867: CALL 4872 0 0
// end ;
4871: END
// export sideP1 , sideP2 ; export function MultiplayerColorCheck ; var i , j , z , tempSide , un , deleteColors , lastIndex , side_list ; begin
4872: LD_INT 0
4874: PPUSH
4875: PPUSH
4876: PPUSH
4877: PPUSH
4878: PPUSH
4879: PPUSH
4880: PPUSH
4881: PPUSH
4882: PPUSH
// sideP1 = GetSide ( rugeneral1 ) ;
4883: LD_ADDR_EXP 43
4887: PUSH
4888: LD_INT 174
4890: PPUSH
4891: CALL_OW 255
4895: ST_TO_ADDR
// sideP2 = GetSide ( rugeneral2 ) ;
4896: LD_ADDR_EXP 44
4900: PUSH
4901: LD_INT 176
4903: PPUSH
4904: CALL_OW 255
4908: ST_TO_ADDR
// side_list = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] diff sideP1 ^ sideP2 ;
4909: LD_ADDR_VAR 0 9
4913: PUSH
4914: LD_INT 1
4916: PUSH
4917: LD_INT 2
4919: PUSH
4920: LD_INT 3
4922: PUSH
4923: LD_INT 4
4925: PUSH
4926: LD_INT 5
4928: PUSH
4929: LD_INT 6
4931: PUSH
4932: LD_INT 7
4934: PUSH
4935: LD_INT 8
4937: PUSH
4938: EMPTY
4939: LIST
4940: LIST
4941: LIST
4942: LIST
4943: LIST
4944: LIST
4945: LIST
4946: LIST
4947: PUSH
4948: LD_EXP 43
4952: PUSH
4953: LD_EXP 44
4957: ADD
4958: DIFF
4959: ST_TO_ADDR
// for j = 1 to 5 do
4960: LD_ADDR_VAR 0 3
4964: PUSH
4965: DOUBLE
4966: LD_INT 1
4968: DEC
4969: ST_TO_ADDR
4970: LD_INT 5
4972: PUSH
4973: FOR_TO
4974: IFFALSE 5124
// begin tempSide = side_list [ Rand ( 1 , lastIndeX ) ] ;
4976: LD_ADDR_VAR 0 5
4980: PUSH
4981: LD_VAR 0 9
4985: PUSH
4986: LD_INT 1
4988: PPUSH
4989: LD_VAR 0 8
4993: PPUSH
4994: CALL_OW 12
4998: ARRAY
4999: ST_TO_ADDR
// deleteColors = [ ] ;
5000: LD_ADDR_VAR 0 7
5004: PUSH
5005: EMPTY
5006: ST_TO_ADDR
// for z = 1 to side_list do
5007: LD_ADDR_VAR 0 4
5011: PUSH
5012: DOUBLE
5013: LD_INT 1
5015: DEC
5016: ST_TO_ADDR
5017: LD_VAR 0 9
5021: PUSH
5022: FOR_TO
5023: IFFALSE 5120
// begin if side_list [ z ] = tempSide then
5025: LD_VAR 0 9
5029: PUSH
5030: LD_VAR 0 4
5034: ARRAY
5035: PUSH
5036: LD_VAR 0 5
5040: EQUAL
5041: IFFALSE 5118
// begin randomedColors = randomedColors ^ side_list [ z ] ;
5043: LD_ADDR_EXP 42
5047: PUSH
5048: LD_EXP 42
5052: PUSH
5053: LD_VAR 0 9
5057: PUSH
5058: LD_VAR 0 4
5062: ARRAY
5063: ADD
5064: ST_TO_ADDR
// deleteColors = deleteColors ^ side_list [ z ] ;
5065: LD_ADDR_VAR 0 7
5069: PUSH
5070: LD_VAR 0 7
5074: PUSH
5075: LD_VAR 0 9
5079: PUSH
5080: LD_VAR 0 4
5084: ARRAY
5085: ADD
5086: ST_TO_ADDR
// side_list = side_list diff deleteColors ;
5087: LD_ADDR_VAR 0 9
5091: PUSH
5092: LD_VAR 0 9
5096: PUSH
5097: LD_VAR 0 7
5101: DIFF
5102: ST_TO_ADDR
// lastIndex = sizeTab ( side_list ) ;
5103: LD_ADDR_VAR 0 8
5107: PUSH
5108: LD_VAR 0 9
5112: PPUSH
5113: CALL 5131 0 1
5117: ST_TO_ADDR
// end ; end ;
5118: GO 5022
5120: POP
5121: POP
// end ;
5122: GO 4973
5124: POP
5125: POP
// end ; end_of_file
5126: LD_VAR 0 1
5130: RET
// export function SizeTab ( table ) ; var i , lastIndex ; begin
5131: LD_INT 0
5133: PPUSH
5134: PPUSH
5135: PPUSH
// lastIndex := 0 ;
5136: LD_ADDR_VAR 0 4
5140: PUSH
5141: LD_INT 0
5143: ST_TO_ADDR
// for i in table do
5144: LD_ADDR_VAR 0 3
5148: PUSH
5149: LD_VAR 0 1
5153: PUSH
5154: FOR_IN
5155: IFFALSE 5173
// begin lastIndex := lastIndex + 1 ;
5157: LD_ADDR_VAR 0 4
5161: PUSH
5162: LD_VAR 0 4
5166: PUSH
5167: LD_INT 1
5169: PLUS
5170: ST_TO_ADDR
// end ;
5171: GO 5154
5173: POP
5174: POP
// result = lastIndex ;
5175: LD_ADDR_VAR 0 2
5179: PUSH
5180: LD_VAR 0 4
5184: ST_TO_ADDR
// end ;
5185: LD_VAR 0 2
5189: RET
// export function MultiplayerRespawnInside ( side , nation , build , skill , clas , count ) ; var i , l , un ; begin
5190: LD_INT 0
5192: PPUSH
5193: PPUSH
5194: PPUSH
5195: PPUSH
// for i in build do
5196: LD_ADDR_VAR 0 8
5200: PUSH
5201: LD_VAR 0 3
5205: PUSH
5206: FOR_IN
5207: IFFALSE 5408
// begin l = 0 ;
5209: LD_ADDR_VAR 0 9
5213: PUSH
5214: LD_INT 0
5216: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
5217: LD_VAR 0 8
5221: PPUSH
5222: CALL_OW 310
5226: PUSH
5227: LD_INT 0
5229: EQUAL
5230: IFFALSE 5406
// begin repeat begin uc_side = side ;
5232: LD_ADDR_OWVAR 20
5236: PUSH
5237: LD_VAR 0 1
5241: ST_TO_ADDR
// uc_nation = nation ;
5242: LD_ADDR_OWVAR 21
5246: PUSH
5247: LD_VAR 0 2
5251: ST_TO_ADDR
// hc_gallery =  ;
5252: LD_ADDR_OWVAR 33
5256: PUSH
5257: LD_STRING 
5259: ST_TO_ADDR
// hc_name =  ;
5260: LD_ADDR_OWVAR 26
5264: PUSH
5265: LD_STRING 
5267: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
5268: LD_ADDR_OWVAR 29
5272: PUSH
5273: LD_INT 9
5275: PPUSH
5276: LD_INT 11
5278: PPUSH
5279: CALL_OW 12
5283: PUSH
5284: LD_INT 10
5286: PPUSH
5287: LD_INT 12
5289: PPUSH
5290: CALL_OW 12
5294: PUSH
5295: EMPTY
5296: LIST
5297: LIST
5298: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
5299: LD_ADDR_OWVAR 31
5303: PUSH
5304: LD_VAR 0 4
5308: PUSH
5309: LD_VAR 0 4
5313: PUSH
5314: LD_VAR 0 4
5318: PUSH
5319: LD_VAR 0 4
5323: PUSH
5324: EMPTY
5325: LIST
5326: LIST
5327: LIST
5328: LIST
5329: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
5330: LD_ADDR_OWVAR 27
5334: PUSH
5335: LD_INT 1
5337: PPUSH
5338: LD_INT 2
5340: PPUSH
5341: CALL_OW 12
5345: ST_TO_ADDR
// hc_class = clas ;
5346: LD_ADDR_OWVAR 28
5350: PUSH
5351: LD_VAR 0 5
5355: ST_TO_ADDR
// un = CreateHuman ;
5356: LD_ADDR_VAR 0 10
5360: PUSH
5361: CALL_OW 44
5365: ST_TO_ADDR
// PlaceHumanInUnit ( un , build ) ;
5366: LD_VAR 0 10
5370: PPUSH
5371: LD_VAR 0 3
5375: PPUSH
5376: CALL_OW 52
// l = l + 1 ;
5380: LD_ADDR_VAR 0 9
5384: PUSH
5385: LD_VAR 0 9
5389: PUSH
5390: LD_INT 1
5392: PLUS
5393: ST_TO_ADDR
// end until l = count ;
5394: LD_VAR 0 9
5398: PUSH
5399: LD_VAR 0 6
5403: EQUAL
5404: IFFALSE 5232
// end ; end ;
5406: GO 5206
5408: POP
5409: POP
// end ; end_of_file
5410: LD_VAR 0 7
5414: RET
// every 0 0$5 do var i , AR_turret , LEG_turret , un ;
5415: GO 5417
5417: DISABLE
5418: LD_INT 0
5420: PPUSH
5421: PPUSH
5422: PPUSH
5423: PPUSH
// begin SetAttitude ( randomedColors [ 2 ] , randomedColors [ 4 ] , att_friend , true ) ;
5424: LD_EXP 42
5428: PUSH
5429: LD_INT 2
5431: ARRAY
5432: PPUSH
5433: LD_EXP 42
5437: PUSH
5438: LD_INT 4
5440: ARRAY
5441: PPUSH
5442: LD_INT 1
5444: PPUSH
5445: LD_INT 1
5447: PPUSH
5448: CALL_OW 80
// SetAttitude ( randomedColors [ 4 ] , randomedColors [ 2 ] , att_friend , true ) ;
5452: LD_EXP 42
5456: PUSH
5457: LD_INT 4
5459: ARRAY
5460: PPUSH
5461: LD_EXP 42
5465: PUSH
5466: LD_INT 2
5468: ARRAY
5469: PPUSH
5470: LD_INT 1
5472: PPUSH
5473: LD_INT 1
5475: PPUSH
5476: CALL_OW 80
// SetAttitude ( randomedColors [ 3 ] , randomedColors [ 5 ] , att_friend , true ) ;
5480: LD_EXP 42
5484: PUSH
5485: LD_INT 3
5487: ARRAY
5488: PPUSH
5489: LD_EXP 42
5493: PUSH
5494: LD_INT 5
5496: ARRAY
5497: PPUSH
5498: LD_INT 1
5500: PPUSH
5501: LD_INT 1
5503: PPUSH
5504: CALL_OW 80
// SetAttitude ( randomedColors [ 5 ] , randomedColors [ 3 ] , att_friend , true ) ;
5508: LD_EXP 42
5512: PUSH
5513: LD_INT 5
5515: ARRAY
5516: PPUSH
5517: LD_EXP 42
5521: PUSH
5522: LD_INT 3
5524: ARRAY
5525: PPUSH
5526: LD_INT 1
5528: PPUSH
5529: LD_INT 1
5531: PPUSH
5532: CALL_OW 80
// MultiplayerRespawnInside ( randomedColors [ 2 ] , 2 , ArDepot , difficultyC , 2 , 4 ) ;
5536: LD_EXP 42
5540: PUSH
5541: LD_INT 2
5543: ARRAY
5544: PPUSH
5545: LD_INT 2
5547: PPUSH
5548: LD_INT 1
5550: PPUSH
5551: LD_EXP 20
5555: PPUSH
5556: LD_INT 2
5558: PPUSH
5559: LD_INT 4
5561: PPUSH
5562: CALL 5190 0 6
// MultiplayerRespawnInside ( randomedColors [ 2 ] , 2 , ArFact , difficultyC , 3 , 3 ) ;
5566: LD_EXP 42
5570: PUSH
5571: LD_INT 2
5573: ARRAY
5574: PPUSH
5575: LD_INT 2
5577: PPUSH
5578: LD_INT 5
5580: PPUSH
5581: LD_EXP 20
5585: PPUSH
5586: LD_INT 3
5588: PPUSH
5589: LD_INT 3
5591: PPUSH
5592: CALL 5190 0 6
// MultiplayerRespawnInside ( randomedColors [ 2 ] , 2 , ArLabWS , difficultyC , 4 , 2 ) ;
5596: LD_EXP 42
5600: PUSH
5601: LD_INT 2
5603: ARRAY
5604: PPUSH
5605: LD_INT 2
5607: PPUSH
5608: LD_INT 11
5610: PPUSH
5611: LD_EXP 20
5615: PPUSH
5616: LD_INT 4
5618: PPUSH
5619: LD_INT 2
5621: PPUSH
5622: CALL 5190 0 6
// MultiplayerRespawnInside ( randomedColors [ 2 ] , 2 , ArLabBO , difficultyC , 4 , 2 ) ;
5626: LD_EXP 42
5630: PUSH
5631: LD_INT 2
5633: ARRAY
5634: PPUSH
5635: LD_INT 2
5637: PPUSH
5638: LD_INT 12
5640: PPUSH
5641: LD_EXP 20
5645: PPUSH
5646: LD_INT 4
5648: PPUSH
5649: LD_INT 2
5651: PPUSH
5652: CALL 5190 0 6
// MultiplayerRespawnInside ( randomedColors [ 2 ] , 2 , ArBar1 , difficultyC , 8 , 3 ) ;
5656: LD_EXP 42
5660: PUSH
5661: LD_INT 2
5663: ARRAY
5664: PPUSH
5665: LD_INT 2
5667: PPUSH
5668: LD_INT 80
5670: PPUSH
5671: LD_EXP 20
5675: PPUSH
5676: LD_INT 8
5678: PPUSH
5679: LD_INT 3
5681: PPUSH
5682: CALL 5190 0 6
// MultiplayerRespawnInside ( randomedColors [ 2 ] , 2 , ArBar2 , difficultyC , 8 , 3 ) ;
5686: LD_EXP 42
5690: PUSH
5691: LD_INT 2
5693: ARRAY
5694: PPUSH
5695: LD_INT 2
5697: PPUSH
5698: LD_INT 78
5700: PPUSH
5701: LD_EXP 20
5705: PPUSH
5706: LD_INT 8
5708: PPUSH
5709: LD_INT 3
5711: PPUSH
5712: CALL 5190 0 6
// AR_Turret := FilterAllUnits ( [ [ f_side , randomedColors [ 2 ] ] , [ f_btype , b_bunker ] ] ) ;
5716: LD_ADDR_VAR 0 2
5720: PUSH
5721: LD_INT 22
5723: PUSH
5724: LD_EXP 42
5728: PUSH
5729: LD_INT 2
5731: ARRAY
5732: PUSH
5733: EMPTY
5734: LIST
5735: LIST
5736: PUSH
5737: LD_INT 30
5739: PUSH
5740: LD_INT 32
5742: PUSH
5743: EMPTY
5744: LIST
5745: LIST
5746: PUSH
5747: EMPTY
5748: LIST
5749: LIST
5750: PPUSH
5751: CALL_OW 69
5755: ST_TO_ADDR
// LEG_Turret := FilterAllUnits ( [ [ f_side , randomedColors [ 3 ] ] , [ f_btype , b_bunker ] ] ) ;
5756: LD_ADDR_VAR 0 3
5760: PUSH
5761: LD_INT 22
5763: PUSH
5764: LD_EXP 42
5768: PUSH
5769: LD_INT 3
5771: ARRAY
5772: PUSH
5773: EMPTY
5774: LIST
5775: LIST
5776: PUSH
5777: LD_INT 30
5779: PUSH
5780: LD_INT 32
5782: PUSH
5783: EMPTY
5784: LIST
5785: LIST
5786: PUSH
5787: EMPTY
5788: LIST
5789: LIST
5790: PPUSH
5791: CALL_OW 69
5795: ST_TO_ADDR
// uc_side = randomedColors [ 2 ] ;
5796: LD_ADDR_OWVAR 20
5800: PUSH
5801: LD_EXP 42
5805: PUSH
5806: LD_INT 2
5808: ARRAY
5809: ST_TO_ADDR
// uc_nation = 2 ;
5810: LD_ADDR_OWVAR 21
5814: PUSH
5815: LD_INT 2
5817: ST_TO_ADDR
// for i in AR_Turret do
5818: LD_ADDR_VAR 0 1
5822: PUSH
5823: LD_VAR 0 2
5827: PUSH
5828: FOR_IN
5829: IFFALSE 5974
// begin if IsInUnit ( i ) = 0 then
5831: LD_VAR 0 1
5835: PPUSH
5836: CALL_OW 310
5840: PUSH
5841: LD_INT 0
5843: EQUAL
5844: IFFALSE 5972
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
5846: LD_ADDR_OWVAR 29
5850: PUSH
5851: LD_INT 9
5853: PPUSH
5854: LD_INT 11
5856: PPUSH
5857: CALL_OW 12
5861: PUSH
5862: LD_INT 10
5864: PPUSH
5865: LD_INT 12
5867: PPUSH
5868: CALL_OW 12
5872: PUSH
5873: EMPTY
5874: LIST
5875: LIST
5876: ST_TO_ADDR
// hc_skills = [ difficultyC , difficultyC , difficultyC , difficultyC ] ;
5877: LD_ADDR_OWVAR 31
5881: PUSH
5882: LD_EXP 20
5886: PUSH
5887: LD_EXP 20
5891: PUSH
5892: LD_EXP 20
5896: PUSH
5897: LD_EXP 20
5901: PUSH
5902: EMPTY
5903: LIST
5904: LIST
5905: LIST
5906: LIST
5907: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
5908: LD_ADDR_OWVAR 27
5912: PUSH
5913: LD_INT 1
5915: PPUSH
5916: LD_INT 2
5918: PPUSH
5919: CALL_OW 12
5923: ST_TO_ADDR
// hc_class = 1 ;
5924: LD_ADDR_OWVAR 28
5928: PUSH
5929: LD_INT 1
5931: ST_TO_ADDR
// hc_gallery =  ;
5932: LD_ADDR_OWVAR 33
5936: PUSH
5937: LD_STRING 
5939: ST_TO_ADDR
// hc_name =  ;
5940: LD_ADDR_OWVAR 26
5944: PUSH
5945: LD_STRING 
5947: ST_TO_ADDR
// un := CreateHuman ;
5948: LD_ADDR_VAR 0 4
5952: PUSH
5953: CALL_OW 44
5957: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
5958: LD_VAR 0 4
5962: PPUSH
5963: LD_VAR 0 1
5967: PPUSH
5968: CALL_OW 52
// end ; end ;
5972: GO 5828
5974: POP
5975: POP
// MultiplayerRespawnInside ( randomedColors [ 3 ] , 2 , LeDepot , difficultyC , 2 , 4 ) ;
5976: LD_EXP 42
5980: PUSH
5981: LD_INT 3
5983: ARRAY
5984: PPUSH
5985: LD_INT 2
5987: PPUSH
5988: LD_INT 20
5990: PPUSH
5991: LD_EXP 20
5995: PPUSH
5996: LD_INT 2
5998: PPUSH
5999: LD_INT 4
6001: PPUSH
6002: CALL 5190 0 6
// MultiplayerRespawnInside ( randomedColors [ 3 ] , 2 , LeFact , difficultyC , 3 , 3 ) ;
6006: LD_EXP 42
6010: PUSH
6011: LD_INT 3
6013: ARRAY
6014: PPUSH
6015: LD_INT 2
6017: PPUSH
6018: LD_INT 26
6020: PPUSH
6021: LD_EXP 20
6025: PPUSH
6026: LD_INT 3
6028: PPUSH
6029: LD_INT 3
6031: PPUSH
6032: CALL 5190 0 6
// MultiplayerRespawnInside ( randomedColors [ 3 ] , 2 , LeLab , difficultyC , 4 , 2 ) ;
6036: LD_EXP 42
6040: PUSH
6041: LD_INT 3
6043: ARRAY
6044: PPUSH
6045: LD_INT 2
6047: PPUSH
6048: LD_INT 25
6050: PPUSH
6051: LD_EXP 20
6055: PPUSH
6056: LD_INT 4
6058: PPUSH
6059: LD_INT 2
6061: PPUSH
6062: CALL 5190 0 6
// MultiplayerRespawnInside ( randomedColors [ 3 ] , 2 , LeBar1 , difficultyC , 8 , 3 ) ;
6066: LD_EXP 42
6070: PUSH
6071: LD_INT 3
6073: ARRAY
6074: PPUSH
6075: LD_INT 2
6077: PPUSH
6078: LD_INT 165
6080: PPUSH
6081: LD_EXP 20
6085: PPUSH
6086: LD_INT 8
6088: PPUSH
6089: LD_INT 3
6091: PPUSH
6092: CALL 5190 0 6
// uc_side = randomedColors [ 3 ] ;
6096: LD_ADDR_OWVAR 20
6100: PUSH
6101: LD_EXP 42
6105: PUSH
6106: LD_INT 3
6108: ARRAY
6109: ST_TO_ADDR
// uc_nation = 2 ;
6110: LD_ADDR_OWVAR 21
6114: PUSH
6115: LD_INT 2
6117: ST_TO_ADDR
// for i in LEG_Turret do
6118: LD_ADDR_VAR 0 1
6122: PUSH
6123: LD_VAR 0 3
6127: PUSH
6128: FOR_IN
6129: IFFALSE 6274
// begin if IsInUnit ( i ) = 0 then
6131: LD_VAR 0 1
6135: PPUSH
6136: CALL_OW 310
6140: PUSH
6141: LD_INT 0
6143: EQUAL
6144: IFFALSE 6272
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6146: LD_ADDR_OWVAR 29
6150: PUSH
6151: LD_INT 9
6153: PPUSH
6154: LD_INT 11
6156: PPUSH
6157: CALL_OW 12
6161: PUSH
6162: LD_INT 10
6164: PPUSH
6165: LD_INT 12
6167: PPUSH
6168: CALL_OW 12
6172: PUSH
6173: EMPTY
6174: LIST
6175: LIST
6176: ST_TO_ADDR
// hc_skills = [ difficultyC , difficultyC , difficultyC , difficultyC ] ;
6177: LD_ADDR_OWVAR 31
6181: PUSH
6182: LD_EXP 20
6186: PUSH
6187: LD_EXP 20
6191: PUSH
6192: LD_EXP 20
6196: PUSH
6197: LD_EXP 20
6201: PUSH
6202: EMPTY
6203: LIST
6204: LIST
6205: LIST
6206: LIST
6207: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6208: LD_ADDR_OWVAR 27
6212: PUSH
6213: LD_INT 1
6215: PPUSH
6216: LD_INT 2
6218: PPUSH
6219: CALL_OW 12
6223: ST_TO_ADDR
// hc_class = 1 ;
6224: LD_ADDR_OWVAR 28
6228: PUSH
6229: LD_INT 1
6231: ST_TO_ADDR
// hc_gallery =  ;
6232: LD_ADDR_OWVAR 33
6236: PUSH
6237: LD_STRING 
6239: ST_TO_ADDR
// hc_name =  ;
6240: LD_ADDR_OWVAR 26
6244: PUSH
6245: LD_STRING 
6247: ST_TO_ADDR
// un := CreateHuman ;
6248: LD_ADDR_VAR 0 4
6252: PUSH
6253: CALL_OW 44
6257: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
6258: LD_VAR 0 4
6262: PPUSH
6263: LD_VAR 0 1
6267: PPUSH
6268: CALL_OW 52
// end ; end ;
6272: GO 6128
6274: POP
6275: POP
// end ; end_of_file
6276: PPOPN 4
6278: END
// every 0 0$1 do
6279: GO 6281
6281: DISABLE
// begin enable ;
6282: ENABLE
// RepairBuilding ( randomedColors [ 2 ] , ArDepot ) ;
6283: LD_EXP 42
6287: PUSH
6288: LD_INT 2
6290: ARRAY
6291: PPUSH
6292: LD_INT 1
6294: PPUSH
6295: CALL 7534 0 2
// RepairBuilding ( randomedColors [ 3 ] , LeDepot ) ;
6299: LD_EXP 42
6303: PUSH
6304: LD_INT 3
6306: ARRAY
6307: PPUSH
6308: LD_INT 20
6310: PPUSH
6311: CALL 7534 0 2
// HealUnitInBase ( randomedColors [ 2 ] , ArabianHealArea , SamarkandBase , ArLabWS ) ;
6315: LD_EXP 42
6319: PUSH
6320: LD_INT 2
6322: ARRAY
6323: PPUSH
6324: LD_INT 8
6326: PPUSH
6327: LD_INT 3
6329: PPUSH
6330: LD_INT 11
6332: PPUSH
6333: CALL 7789 0 4
// HealUnitInBase ( randomedColors [ 3 ] , LegionHealArea , LegionBase , LeLab ) ;
6337: LD_EXP 42
6341: PUSH
6342: LD_INT 3
6344: ARRAY
6345: PPUSH
6346: LD_INT 7
6348: PPUSH
6349: LD_INT 4
6351: PPUSH
6352: LD_INT 25
6354: PPUSH
6355: CALL 7789 0 4
// end ;
6359: END
// export ArControler , LegControler ; every 0 0$3 do
6360: GO 6362
6362: DISABLE
// begin uc_side = randomedColors [ 2 ] ;
6363: LD_ADDR_OWVAR 20
6367: PUSH
6368: LD_EXP 42
6372: PUSH
6373: LD_INT 2
6375: ARRAY
6376: ST_TO_ADDR
// uc_nation = 2 ;
6377: LD_ADDR_OWVAR 21
6381: PUSH
6382: LD_INT 2
6384: ST_TO_ADDR
// hc_skills = [ 0 , Rand ( 0 , difficultyC ) , difficultyC + 2 , Rand ( 0 , difficultyC ) ] ;
6385: LD_ADDR_OWVAR 31
6389: PUSH
6390: LD_INT 0
6392: PUSH
6393: LD_INT 0
6395: PPUSH
6396: LD_EXP 20
6400: PPUSH
6401: CALL_OW 12
6405: PUSH
6406: LD_EXP 20
6410: PUSH
6411: LD_INT 2
6413: PLUS
6414: PUSH
6415: LD_INT 0
6417: PPUSH
6418: LD_EXP 20
6422: PPUSH
6423: CALL_OW 12
6427: PUSH
6428: EMPTY
6429: LIST
6430: LIST
6431: LIST
6432: LIST
6433: ST_TO_ADDR
// hc_class = 3 ;
6434: LD_ADDR_OWVAR 28
6438: PUSH
6439: LD_INT 3
6441: ST_TO_ADDR
// hc_name =  ;
6442: LD_ADDR_OWVAR 26
6446: PUSH
6447: LD_STRING 
6449: ST_TO_ADDR
// hc_gallery =  ;
6450: LD_ADDR_OWVAR 33
6454: PUSH
6455: LD_STRING 
6457: ST_TO_ADDR
// ArControler = CreateHuman ;
6458: LD_ADDR_EXP 45
6462: PUSH
6463: CALL_OW 44
6467: ST_TO_ADDR
// PlaceHumanInUnit ( ArControler , ArTower ) ;
6468: LD_EXP 45
6472: PPUSH
6473: LD_INT 189
6475: PPUSH
6476: CALL_OW 52
// uc_side = randomedColors [ 3 ] ;
6480: LD_ADDR_OWVAR 20
6484: PUSH
6485: LD_EXP 42
6489: PUSH
6490: LD_INT 3
6492: ARRAY
6493: ST_TO_ADDR
// LegControler = CreateHuman ;
6494: LD_ADDR_EXP 46
6498: PUSH
6499: CALL_OW 44
6503: ST_TO_ADDR
// PlaceHumanInUnit ( LegControler , LegTower ) ;
6504: LD_EXP 46
6508: PPUSH
6509: LD_INT 190
6511: PPUSH
6512: CALL_OW 52
// create_minefield ;
6516: CALL 12154 0 0
// end ;
6520: END
// every 10 10$1 do
6521: GO 6523
6523: DISABLE
// begin enable ;
6524: ENABLE
// AttackAndDestroySibDeposit ( randomedColors [ 4 ] , ArabianHideAttack , difficultyC , 5 , 2 , 2 , 23 , 9 ) ;
6525: LD_EXP 42
6529: PUSH
6530: LD_INT 4
6532: ARRAY
6533: PPUSH
6534: LD_INT 15
6536: PPUSH
6537: LD_EXP 20
6541: PPUSH
6542: LD_INT 5
6544: PPUSH
6545: LD_INT 2
6547: PPUSH
6548: LD_INT 2
6550: PPUSH
6551: LD_INT 23
6553: PPUSH
6554: LD_INT 9
6556: PPUSH
6557: CALL 11355 0 8
// end ;
6561: END
// every 25 25$1 do
6562: GO 6564
6564: DISABLE
// begin enable ;
6565: ENABLE
// RespawnAttackInfantry ( randomedColors [ 4 ] , 2 , 10 , 0 , 0 , 3 , 3 , difficultyC , ArabianSpawn , ArabianAttackHealArea , 24 , 22 ) ;
6566: LD_EXP 42
6570: PUSH
6571: LD_INT 4
6573: ARRAY
6574: PPUSH
6575: LD_INT 2
6577: PPUSH
6578: LD_INT 10
6580: PPUSH
6581: LD_INT 0
6583: PPUSH
6584: LD_INT 0
6586: PPUSH
6587: LD_INT 3
6589: PPUSH
6590: LD_INT 3
6592: PPUSH
6593: LD_EXP 20
6597: PPUSH
6598: LD_INT 1
6600: PPUSH
6601: LD_INT 13
6603: PPUSH
6604: LD_INT 24
6606: PPUSH
6607: LD_INT 22
6609: PPUSH
6610: CALL 8085 0 12
// end ;
6614: END
// every 25 25$1 do
6615: GO 6617
6617: DISABLE
// begin enable ;
6618: ENABLE
// RespawnAttackVehicle ( ArabianSpawn , randomedColors [ 4 ] , 6 , difficultyC , 2 , 3 , 1 , [ ] , [ 25 , 26 , 27 , 28 ] , [ ] , ArabianAttackRepairArea , 24 , 22 ) ;
6619: LD_INT 1
6621: PPUSH
6622: LD_EXP 42
6626: PUSH
6627: LD_INT 4
6629: ARRAY
6630: PPUSH
6631: LD_INT 6
6633: PPUSH
6634: LD_EXP 20
6638: PPUSH
6639: LD_INT 2
6641: PPUSH
6642: LD_INT 3
6644: PPUSH
6645: LD_INT 1
6647: PPUSH
6648: EMPTY
6649: PPUSH
6650: LD_INT 25
6652: PUSH
6653: LD_INT 26
6655: PUSH
6656: LD_INT 27
6658: PUSH
6659: LD_INT 28
6661: PUSH
6662: EMPTY
6663: LIST
6664: LIST
6665: LIST
6666: LIST
6667: PPUSH
6668: EMPTY
6669: PPUSH
6670: LD_INT 14
6672: PPUSH
6673: LD_INT 24
6675: PPUSH
6676: LD_INT 22
6678: PPUSH
6679: CALL 9322 0 13
// end ;
6683: END
// every 30 30$1 do
6684: GO 6686
6686: DISABLE
// begin enable ;
6687: ENABLE
// RespawnAttackInfantry ( randomedColors [ 5 ] , 2 , 10 , 0 , 0 , 3 , 3 , difficultyC , LegionSpawn , LegAttackHealArea , 24 , 22 ) ;
6688: LD_EXP 42
6692: PUSH
6693: LD_INT 5
6695: ARRAY
6696: PPUSH
6697: LD_INT 2
6699: PPUSH
6700: LD_INT 10
6702: PPUSH
6703: LD_INT 0
6705: PPUSH
6706: LD_INT 0
6708: PPUSH
6709: LD_INT 3
6711: PPUSH
6712: LD_INT 3
6714: PPUSH
6715: LD_EXP 20
6719: PPUSH
6720: LD_INT 2
6722: PPUSH
6723: LD_INT 11
6725: PPUSH
6726: LD_INT 24
6728: PPUSH
6729: LD_INT 22
6731: PPUSH
6732: CALL 8085 0 12
// end ;
6736: END
// every 30 30$1 do
6737: GO 6739
6739: DISABLE
// begin enable ;
6740: ENABLE
// RespawnAttackVehicle ( LegionSpawn , randomedColors [ 5 ] , 6 , difficultyC , 2 , 3 , 1 , [ ] , [ 25 , 26 , 27 , 28 ] , [ ] , LegAttackRepairArea , 24 , 22 ) ;
6741: LD_INT 2
6743: PPUSH
6744: LD_EXP 42
6748: PUSH
6749: LD_INT 5
6751: ARRAY
6752: PPUSH
6753: LD_INT 6
6755: PPUSH
6756: LD_EXP 20
6760: PPUSH
6761: LD_INT 2
6763: PPUSH
6764: LD_INT 3
6766: PPUSH
6767: LD_INT 1
6769: PPUSH
6770: EMPTY
6771: PPUSH
6772: LD_INT 25
6774: PUSH
6775: LD_INT 26
6777: PUSH
6778: LD_INT 27
6780: PUSH
6781: LD_INT 28
6783: PUSH
6784: EMPTY
6785: LIST
6786: LIST
6787: LIST
6788: LIST
6789: PPUSH
6790: EMPTY
6791: PPUSH
6792: LD_INT 12
6794: PPUSH
6795: LD_INT 24
6797: PPUSH
6798: LD_INT 22
6800: PPUSH
6801: CALL 9322 0 13
// end ;
6805: END
// every 40 40$1 do
6806: GO 6808
6808: DISABLE
// begin enable ;
6809: ENABLE
// AttackSelfBombs ( randomedColors [ 4 ] , ArabianSpawn , sideP1 , 3 ) ;
6810: LD_EXP 42
6814: PUSH
6815: LD_INT 4
6817: ARRAY
6818: PPUSH
6819: LD_INT 1
6821: PPUSH
6822: LD_EXP 43
6826: PPUSH
6827: LD_INT 3
6829: PPUSH
6830: CALL 11947 0 4
// AttackSelfBombs ( randomedColors [ 5 ] , LegionSpawn , sideP2 , 3 ) ;
6834: LD_EXP 42
6838: PUSH
6839: LD_INT 5
6841: ARRAY
6842: PPUSH
6843: LD_INT 2
6845: PPUSH
6846: LD_EXP 44
6850: PPUSH
6851: LD_INT 3
6853: PPUSH
6854: CALL 11947 0 4
// end ;
6858: END
// every 2 2$5 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 2 ] ] , [ f_type , unit_vehicle ] , [ f_control , 2 ] ] ) = 0 do
6859: LD_INT 22
6861: PUSH
6862: LD_EXP 42
6866: PUSH
6867: LD_INT 2
6869: ARRAY
6870: PUSH
6871: EMPTY
6872: LIST
6873: LIST
6874: PUSH
6875: LD_INT 21
6877: PUSH
6878: LD_INT 2
6880: PUSH
6881: EMPTY
6882: LIST
6883: LIST
6884: PUSH
6885: LD_INT 33
6887: PUSH
6888: LD_INT 2
6890: PUSH
6891: EMPTY
6892: LIST
6893: LIST
6894: PUSH
6895: EMPTY
6896: LIST
6897: LIST
6898: LIST
6899: PPUSH
6900: CALL_OW 69
6904: PUSH
6905: LD_INT 0
6907: EQUAL
6908: IFFALSE 7028
6910: GO 6912
6912: DISABLE
// begin enable ;
6913: ENABLE
// AddComConstruct ( ArFact , 14 , 3 , 2 , 27 ) ;
6914: LD_INT 5
6916: PPUSH
6917: LD_INT 14
6919: PPUSH
6920: LD_INT 3
6922: PPUSH
6923: LD_INT 2
6925: PPUSH
6926: LD_INT 27
6928: PPUSH
6929: CALL_OW 185
// AddComConstruct ( ArFact , 14 , 3 , 2 , 27 ) ;
6933: LD_INT 5
6935: PPUSH
6936: LD_INT 14
6938: PPUSH
6939: LD_INT 3
6941: PPUSH
6942: LD_INT 2
6944: PPUSH
6945: LD_INT 27
6947: PPUSH
6948: CALL_OW 185
// AddComConstruct ( ArFact , 14 , 3 , 2 , 27 ) ;
6952: LD_INT 5
6954: PPUSH
6955: LD_INT 14
6957: PPUSH
6958: LD_INT 3
6960: PPUSH
6961: LD_INT 2
6963: PPUSH
6964: LD_INT 27
6966: PPUSH
6967: CALL_OW 185
// AddComConstruct ( ArFact , 14 , 3 , 2 , 28 ) ;
6971: LD_INT 5
6973: PPUSH
6974: LD_INT 14
6976: PPUSH
6977: LD_INT 3
6979: PPUSH
6980: LD_INT 2
6982: PPUSH
6983: LD_INT 28
6985: PPUSH
6986: CALL_OW 185
// AddComConstruct ( ArFact , 14 , 3 , 2 , 28 ) ;
6990: LD_INT 5
6992: PPUSH
6993: LD_INT 14
6995: PPUSH
6996: LD_INT 3
6998: PPUSH
6999: LD_INT 2
7001: PPUSH
7002: LD_INT 28
7004: PPUSH
7005: CALL_OW 185
// AddComConstruct ( ArFact , 14 , 3 , 2 , 29 ) ;
7009: LD_INT 5
7011: PPUSH
7012: LD_INT 14
7014: PPUSH
7015: LD_INT 3
7017: PPUSH
7018: LD_INT 2
7020: PPUSH
7021: LD_INT 29
7023: PPUSH
7024: CALL_OW 185
// end ;
7028: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 2 ] ] , [ f_type , unit_vehicle ] , [ f_control , 2 ] ] ) >= 6 do var target , i ;
7029: LD_INT 22
7031: PUSH
7032: LD_EXP 42
7036: PUSH
7037: LD_INT 2
7039: ARRAY
7040: PUSH
7041: EMPTY
7042: LIST
7043: LIST
7044: PUSH
7045: LD_INT 21
7047: PUSH
7048: LD_INT 2
7050: PUSH
7051: EMPTY
7052: LIST
7053: LIST
7054: PUSH
7055: LD_INT 33
7057: PUSH
7058: LD_INT 2
7060: PUSH
7061: EMPTY
7062: LIST
7063: LIST
7064: PUSH
7065: EMPTY
7066: LIST
7067: LIST
7068: LIST
7069: PPUSH
7070: CALL_OW 69
7074: PUSH
7075: LD_INT 6
7077: GREATEREQUAL
7078: IFFALSE 7199
7080: GO 7082
7082: DISABLE
7083: LD_INT 0
7085: PPUSH
7086: PPUSH
// begin enable ;
7087: ENABLE
// wait ( 0 0$3 ) ;
7088: LD_INT 105
7090: PPUSH
7091: CALL_OW 67
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 2 ] ] , [ f_type , unit_vehicle ] , [ f_control , 2 ] ] ) do
7095: LD_ADDR_VAR 0 2
7099: PUSH
7100: LD_INT 22
7102: PUSH
7103: LD_EXP 42
7107: PUSH
7108: LD_INT 2
7110: ARRAY
7111: PUSH
7112: EMPTY
7113: LIST
7114: LIST
7115: PUSH
7116: LD_INT 21
7118: PUSH
7119: LD_INT 2
7121: PUSH
7122: EMPTY
7123: LIST
7124: LIST
7125: PUSH
7126: LD_INT 33
7128: PUSH
7129: LD_INT 2
7131: PUSH
7132: EMPTY
7133: LIST
7134: LIST
7135: PUSH
7136: EMPTY
7137: LIST
7138: LIST
7139: LIST
7140: PPUSH
7141: CALL_OW 69
7145: PUSH
7146: FOR_IN
7147: IFFALSE 7197
// begin target := NearestUnitToUnit ( FilterAllUnits ( [ f_side , sideP1 ] ) , i ) ;
7149: LD_ADDR_VAR 0 1
7153: PUSH
7154: LD_INT 22
7156: PUSH
7157: LD_EXP 43
7161: PUSH
7162: EMPTY
7163: LIST
7164: LIST
7165: PPUSH
7166: CALL_OW 69
7170: PPUSH
7171: LD_VAR 0 2
7175: PPUSH
7176: CALL_OW 74
7180: ST_TO_ADDR
// ComAttackUnit ( i , target ) ;
7181: LD_VAR 0 2
7185: PPUSH
7186: LD_VAR 0 1
7190: PPUSH
7191: CALL_OW 115
// end ;
7195: GO 7146
7197: POP
7198: POP
// end ;
7199: PPOPN 2
7201: END
// every 2 2$5 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 3 ] ] , [ f_type , unit_vehicle ] , [ f_control , 2 ] ] ) = 0 do
7202: LD_INT 22
7204: PUSH
7205: LD_EXP 42
7209: PUSH
7210: LD_INT 3
7212: ARRAY
7213: PUSH
7214: EMPTY
7215: LIST
7216: LIST
7217: PUSH
7218: LD_INT 21
7220: PUSH
7221: LD_INT 2
7223: PUSH
7224: EMPTY
7225: LIST
7226: LIST
7227: PUSH
7228: LD_INT 33
7230: PUSH
7231: LD_INT 2
7233: PUSH
7234: EMPTY
7235: LIST
7236: LIST
7237: PUSH
7238: EMPTY
7239: LIST
7240: LIST
7241: LIST
7242: PPUSH
7243: CALL_OW 69
7247: PUSH
7248: LD_INT 0
7250: EQUAL
7251: IFFALSE 7371
7253: GO 7255
7255: DISABLE
// begin enable ;
7256: ENABLE
// AddComConstruct ( LeFact , 14 , 3 , 2 , 27 ) ;
7257: LD_INT 26
7259: PPUSH
7260: LD_INT 14
7262: PPUSH
7263: LD_INT 3
7265: PPUSH
7266: LD_INT 2
7268: PPUSH
7269: LD_INT 27
7271: PPUSH
7272: CALL_OW 185
// AddComConstruct ( LeFact , 14 , 3 , 2 , 27 ) ;
7276: LD_INT 26
7278: PPUSH
7279: LD_INT 14
7281: PPUSH
7282: LD_INT 3
7284: PPUSH
7285: LD_INT 2
7287: PPUSH
7288: LD_INT 27
7290: PPUSH
7291: CALL_OW 185
// AddComConstruct ( LeFact , 14 , 3 , 2 , 27 ) ;
7295: LD_INT 26
7297: PPUSH
7298: LD_INT 14
7300: PPUSH
7301: LD_INT 3
7303: PPUSH
7304: LD_INT 2
7306: PPUSH
7307: LD_INT 27
7309: PPUSH
7310: CALL_OW 185
// AddComConstruct ( LeFact , 14 , 3 , 2 , 28 ) ;
7314: LD_INT 26
7316: PPUSH
7317: LD_INT 14
7319: PPUSH
7320: LD_INT 3
7322: PPUSH
7323: LD_INT 2
7325: PPUSH
7326: LD_INT 28
7328: PPUSH
7329: CALL_OW 185
// AddComConstruct ( LeFact , 14 , 3 , 2 , 28 ) ;
7333: LD_INT 26
7335: PPUSH
7336: LD_INT 14
7338: PPUSH
7339: LD_INT 3
7341: PPUSH
7342: LD_INT 2
7344: PPUSH
7345: LD_INT 28
7347: PPUSH
7348: CALL_OW 185
// AddComConstruct ( LeFact , 14 , 3 , 2 , 29 ) ;
7352: LD_INT 26
7354: PPUSH
7355: LD_INT 14
7357: PPUSH
7358: LD_INT 3
7360: PPUSH
7361: LD_INT 2
7363: PPUSH
7364: LD_INT 29
7366: PPUSH
7367: CALL_OW 185
// end ;
7371: END
// every 0 0$3 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 3 ] ] , [ f_type , unit_vehicle ] , [ f_control , 2 ] ] ) >= 6 do var target , i ;
7372: LD_INT 22
7374: PUSH
7375: LD_EXP 42
7379: PUSH
7380: LD_INT 3
7382: ARRAY
7383: PUSH
7384: EMPTY
7385: LIST
7386: LIST
7387: PUSH
7388: LD_INT 21
7390: PUSH
7391: LD_INT 2
7393: PUSH
7394: EMPTY
7395: LIST
7396: LIST
7397: PUSH
7398: LD_INT 33
7400: PUSH
7401: LD_INT 2
7403: PUSH
7404: EMPTY
7405: LIST
7406: LIST
7407: PUSH
7408: EMPTY
7409: LIST
7410: LIST
7411: LIST
7412: PPUSH
7413: CALL_OW 69
7417: PUSH
7418: LD_INT 6
7420: GREATEREQUAL
7421: IFFALSE 7531
7423: GO 7425
7425: DISABLE
7426: LD_INT 0
7428: PPUSH
7429: PPUSH
// begin enable ;
7430: ENABLE
// wait ( 0 0$3 ) ;
7431: LD_INT 105
7433: PPUSH
7434: CALL_OW 67
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 3 ] ] , [ f_type , unit_vehicle ] ] ) do
7438: LD_ADDR_VAR 0 2
7442: PUSH
7443: LD_INT 22
7445: PUSH
7446: LD_EXP 42
7450: PUSH
7451: LD_INT 3
7453: ARRAY
7454: PUSH
7455: EMPTY
7456: LIST
7457: LIST
7458: PUSH
7459: LD_INT 21
7461: PUSH
7462: LD_INT 2
7464: PUSH
7465: EMPTY
7466: LIST
7467: LIST
7468: PUSH
7469: EMPTY
7470: LIST
7471: LIST
7472: PPUSH
7473: CALL_OW 69
7477: PUSH
7478: FOR_IN
7479: IFFALSE 7529
// begin target := NearestUnitToUnit ( FilterAllUnits ( [ f_side , sideP2 ] ) , i ) ;
7481: LD_ADDR_VAR 0 1
7485: PUSH
7486: LD_INT 22
7488: PUSH
7489: LD_EXP 44
7493: PUSH
7494: EMPTY
7495: LIST
7496: LIST
7497: PPUSH
7498: CALL_OW 69
7502: PPUSH
7503: LD_VAR 0 2
7507: PPUSH
7508: CALL_OW 74
7512: ST_TO_ADDR
// ComAttackUnit ( i , target ) ;
7513: LD_VAR 0 2
7517: PPUSH
7518: LD_VAR 0 1
7522: PPUSH
7523: CALL_OW 115
// end ;
7527: GO 7478
7529: POP
7530: POP
// end ;
7531: PPOPN 2
7533: END
// export function RepairBuilding ( side , build ) ; var buildings_list , i , j , engineerOK_list ; begin
7534: LD_INT 0
7536: PPUSH
7537: PPUSH
7538: PPUSH
7539: PPUSH
7540: PPUSH
// engineerOk_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 2 ] , [ f_lives , 1000 ] ] ) ;
7541: LD_ADDR_VAR 0 7
7545: PUSH
7546: LD_INT 22
7548: PUSH
7549: LD_VAR 0 1
7553: PUSH
7554: EMPTY
7555: LIST
7556: LIST
7557: PUSH
7558: LD_INT 25
7560: PUSH
7561: LD_INT 2
7563: PUSH
7564: EMPTY
7565: LIST
7566: LIST
7567: PUSH
7568: LD_INT 24
7570: PUSH
7571: LD_INT 1000
7573: PUSH
7574: EMPTY
7575: LIST
7576: LIST
7577: PUSH
7578: EMPTY
7579: LIST
7580: LIST
7581: LIST
7582: PPUSH
7583: CALL_OW 69
7587: ST_TO_ADDR
// buildings_list = FilterAllUnits ( [ [ [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
7588: LD_ADDR_VAR 0 4
7592: PUSH
7593: LD_INT 22
7595: PUSH
7596: LD_VAR 0 1
7600: PUSH
7601: EMPTY
7602: LIST
7603: LIST
7604: PUSH
7605: LD_INT 21
7607: PUSH
7608: LD_INT 3
7610: PUSH
7611: EMPTY
7612: LIST
7613: LIST
7614: PUSH
7615: LD_INT 3
7617: PUSH
7618: LD_INT 24
7620: PUSH
7621: LD_INT 1000
7623: PUSH
7624: EMPTY
7625: LIST
7626: LIST
7627: PUSH
7628: EMPTY
7629: LIST
7630: LIST
7631: PUSH
7632: EMPTY
7633: LIST
7634: LIST
7635: LIST
7636: PUSH
7637: EMPTY
7638: LIST
7639: PPUSH
7640: CALL_OW 69
7644: ST_TO_ADDR
// if buildings_list > 0 and engineerOK_list > 0 then
7645: LD_VAR 0 4
7649: PUSH
7650: LD_INT 0
7652: GREATER
7653: PUSH
7654: LD_VAR 0 7
7658: PUSH
7659: LD_INT 0
7661: GREATER
7662: AND
7663: IFFALSE 7784
// begin for j = 1 to buildings_list do
7665: LD_ADDR_VAR 0 6
7669: PUSH
7670: DOUBLE
7671: LD_INT 1
7673: DEC
7674: ST_TO_ADDR
7675: LD_VAR 0 4
7679: PUSH
7680: FOR_TO
7681: IFFALSE 7782
// begin wait ( 0 0$3 ) ;
7683: LD_INT 105
7685: PPUSH
7686: CALL_OW 67
// for i = 1 to engineerOk_list do
7690: LD_ADDR_VAR 0 5
7694: PUSH
7695: DOUBLE
7696: LD_INT 1
7698: DEC
7699: ST_TO_ADDR
7700: LD_VAR 0 7
7704: PUSH
7705: FOR_TO
7706: IFFALSE 7778
// begin wait ( 0 0$3 ) ;
7708: LD_INT 105
7710: PPUSH
7711: CALL_OW 67
// ComExitBuilding ( engineerOK_list [ i ] ) ;
7715: LD_VAR 0 7
7719: PUSH
7720: LD_VAR 0 5
7724: ARRAY
7725: PPUSH
7726: CALL_OW 122
// AddComRepairBuilding ( engineerOk_list [ i ] , buildings_list [ j ] ) ;
7730: LD_VAR 0 7
7734: PUSH
7735: LD_VAR 0 5
7739: ARRAY
7740: PPUSH
7741: LD_VAR 0 4
7745: PUSH
7746: LD_VAR 0 6
7750: ARRAY
7751: PPUSH
7752: CALL_OW 190
// AddComEnterUnit ( engineerOK_list [ i ] , build ) ;
7756: LD_VAR 0 7
7760: PUSH
7761: LD_VAR 0 5
7765: ARRAY
7766: PPUSH
7767: LD_VAR 0 2
7771: PPUSH
7772: CALL_OW 180
// end ;
7776: GO 7705
7778: POP
7779: POP
// end ;
7780: GO 7680
7782: POP
7783: POP
// end ; end ;
7784: LD_VAR 0 3
7788: RET
// export function HealUnitInBase ( side , healArea , baseArea , build ) ; var sci_list , i , j , damageUnits ; begin
7789: LD_INT 0
7791: PPUSH
7792: PPUSH
7793: PPUSH
7794: PPUSH
7795: PPUSH
// sci_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] ] ) ;
7796: LD_ADDR_VAR 0 6
7800: PUSH
7801: LD_INT 22
7803: PUSH
7804: LD_VAR 0 1
7808: PUSH
7809: EMPTY
7810: LIST
7811: LIST
7812: PUSH
7813: LD_INT 25
7815: PUSH
7816: LD_INT 4
7818: PUSH
7819: EMPTY
7820: LIST
7821: LIST
7822: PUSH
7823: EMPTY
7824: LIST
7825: LIST
7826: PPUSH
7827: CALL_OW 69
7831: ST_TO_ADDR
// damageUnits = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_lives , 750 ] ] ] ) ;
7832: LD_ADDR_VAR 0 9
7836: PUSH
7837: LD_VAR 0 3
7841: PPUSH
7842: LD_INT 22
7844: PUSH
7845: LD_VAR 0 1
7849: PUSH
7850: EMPTY
7851: LIST
7852: LIST
7853: PUSH
7854: LD_INT 21
7856: PUSH
7857: LD_INT 1
7859: PUSH
7860: EMPTY
7861: LIST
7862: LIST
7863: PUSH
7864: LD_INT 3
7866: PUSH
7867: LD_INT 24
7869: PUSH
7870: LD_INT 750
7872: PUSH
7873: EMPTY
7874: LIST
7875: LIST
7876: PUSH
7877: EMPTY
7878: LIST
7879: LIST
7880: PUSH
7881: EMPTY
7882: LIST
7883: LIST
7884: LIST
7885: PPUSH
7886: CALL_OW 70
7890: ST_TO_ADDR
// if damageUnits > 0 and sci_list > 0 then
7891: LD_VAR 0 9
7895: PUSH
7896: LD_INT 0
7898: GREATER
7899: PUSH
7900: LD_VAR 0 6
7904: PUSH
7905: LD_INT 0
7907: GREATER
7908: AND
7909: IFFALSE 8066
// begin for i = 1 to damageUnits do
7911: LD_ADDR_VAR 0 7
7915: PUSH
7916: DOUBLE
7917: LD_INT 1
7919: DEC
7920: ST_TO_ADDR
7921: LD_VAR 0 9
7925: PUSH
7926: FOR_TO
7927: IFFALSE 7958
// begin wait ( 0 0$3 ) ;
7929: LD_INT 105
7931: PPUSH
7932: CALL_OW 67
// ComMoveToArea ( damageUnits [ i ] , healArea ) ;
7936: LD_VAR 0 9
7940: PUSH
7941: LD_VAR 0 7
7945: ARRAY
7946: PPUSH
7947: LD_VAR 0 2
7951: PPUSH
7952: CALL_OW 113
// end ;
7956: GO 7926
7958: POP
7959: POP
// for i = 1 to sci_list do
7960: LD_ADDR_VAR 0 7
7964: PUSH
7965: DOUBLE
7966: LD_INT 1
7968: DEC
7969: ST_TO_ADDR
7970: LD_VAR 0 6
7974: PUSH
7975: FOR_TO
7976: IFFALSE 8062
// begin ComExitBuilding ( sci_list [ i ] ) ;
7978: LD_VAR 0 6
7982: PUSH
7983: LD_VAR 0 7
7987: ARRAY
7988: PPUSH
7989: CALL_OW 122
// for j in FilterUnitsInArea ( healArea , [ f_side , side ] ) do
7993: LD_ADDR_VAR 0 8
7997: PUSH
7998: LD_VAR 0 2
8002: PPUSH
8003: LD_INT 22
8005: PUSH
8006: LD_VAR 0 1
8010: PUSH
8011: EMPTY
8012: LIST
8013: LIST
8014: PPUSH
8015: CALL_OW 70
8019: PUSH
8020: FOR_IN
8021: IFFALSE 8058
// begin wait ( 0 0$3 ) ;
8023: LD_INT 105
8025: PPUSH
8026: CALL_OW 67
// AddComHeal ( sci_list [ i ] , j [ j ] ) ;
8030: LD_VAR 0 6
8034: PUSH
8035: LD_VAR 0 7
8039: ARRAY
8040: PPUSH
8041: LD_VAR 0 8
8045: PUSH
8046: LD_VAR 0 8
8050: ARRAY
8051: PPUSH
8052: CALL_OW 188
// end ;
8056: GO 8020
8058: POP
8059: POP
// end ;
8060: GO 7975
8062: POP
8063: POP
// end else
8064: GO 8080
// begin AddComEnterUnit ( sci_list , build ) ;
8066: LD_VAR 0 6
8070: PPUSH
8071: LD_VAR 0 4
8075: PPUSH
8076: CALL_OW 180
// end ; end ;
8080: LD_VAR 0 5
8084: RET
// export function RespawnAttackInfantry ( side , nation , soldierCount , sniperCount , bazookCount , mortalCount , medicCount , skil , spawnArea , healArea , targetX , targetY ) ; var i , un , damageUnit_list , medic_list , soldiersOK_list , enemyUnits , und ; begin
8085: LD_INT 0
8087: PPUSH
8088: PPUSH
8089: PPUSH
8090: PPUSH
8091: PPUSH
8092: PPUSH
8093: PPUSH
8094: PPUSH
// for i = 1 to medicCount do
8095: LD_ADDR_VAR 0 14
8099: PUSH
8100: DOUBLE
8101: LD_INT 1
8103: DEC
8104: ST_TO_ADDR
8105: LD_VAR 0 7
8109: PUSH
8110: FOR_TO
8111: IFFALSE 8241
// begin uc_side = side ;
8113: LD_ADDR_OWVAR 20
8117: PUSH
8118: LD_VAR 0 1
8122: ST_TO_ADDR
// uc_nation = nation ;
8123: LD_ADDR_OWVAR 21
8127: PUSH
8128: LD_VAR 0 2
8132: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , skil ) , Rand ( 0 , skil ) , Rand ( 0 , skil ) , skil ] ;
8133: LD_ADDR_OWVAR 31
8137: PUSH
8138: LD_INT 0
8140: PPUSH
8141: LD_VAR 0 8
8145: PPUSH
8146: CALL_OW 12
8150: PUSH
8151: LD_INT 0
8153: PPUSH
8154: LD_VAR 0 8
8158: PPUSH
8159: CALL_OW 12
8163: PUSH
8164: LD_INT 0
8166: PPUSH
8167: LD_VAR 0 8
8171: PPUSH
8172: CALL_OW 12
8176: PUSH
8177: LD_VAR 0 8
8181: PUSH
8182: EMPTY
8183: LIST
8184: LIST
8185: LIST
8186: LIST
8187: ST_TO_ADDR
// hc_class = 4 ;
8188: LD_ADDR_OWVAR 28
8192: PUSH
8193: LD_INT 4
8195: ST_TO_ADDR
// hc_name =  ;
8196: LD_ADDR_OWVAR 26
8200: PUSH
8201: LD_STRING 
8203: ST_TO_ADDR
// hc_gallery =  ;
8204: LD_ADDR_OWVAR 33
8208: PUSH
8209: LD_STRING 
8211: ST_TO_ADDR
// un = CreateHuman ;
8212: LD_ADDR_VAR 0 15
8216: PUSH
8217: CALL_OW 44
8221: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
8222: LD_VAR 0 15
8226: PPUSH
8227: LD_VAR 0 9
8231: PPUSH
8232: LD_INT 0
8234: PPUSH
8235: CALL_OW 49
// end ;
8239: GO 8110
8241: POP
8242: POP
// for i = 1 to soldierCount do
8243: LD_ADDR_VAR 0 14
8247: PUSH
8248: DOUBLE
8249: LD_INT 1
8251: DEC
8252: ST_TO_ADDR
8253: LD_VAR 0 3
8257: PUSH
8258: FOR_TO
8259: IFFALSE 8389
// begin uc_side = side ;
8261: LD_ADDR_OWVAR 20
8265: PUSH
8266: LD_VAR 0 1
8270: ST_TO_ADDR
// uc_nation = nation ;
8271: LD_ADDR_OWVAR 21
8275: PUSH
8276: LD_VAR 0 2
8280: ST_TO_ADDR
// hc_skills = [ skil , Rand ( 0 , skil ) , Rand ( 0 , skil ) , Rand ( 0 , skil ) ] ;
8281: LD_ADDR_OWVAR 31
8285: PUSH
8286: LD_VAR 0 8
8290: PUSH
8291: LD_INT 0
8293: PPUSH
8294: LD_VAR 0 8
8298: PPUSH
8299: CALL_OW 12
8303: PUSH
8304: LD_INT 0
8306: PPUSH
8307: LD_VAR 0 8
8311: PPUSH
8312: CALL_OW 12
8316: PUSH
8317: LD_INT 0
8319: PPUSH
8320: LD_VAR 0 8
8324: PPUSH
8325: CALL_OW 12
8329: PUSH
8330: EMPTY
8331: LIST
8332: LIST
8333: LIST
8334: LIST
8335: ST_TO_ADDR
// hc_class = 1 ;
8336: LD_ADDR_OWVAR 28
8340: PUSH
8341: LD_INT 1
8343: ST_TO_ADDR
// hc_name =  ;
8344: LD_ADDR_OWVAR 26
8348: PUSH
8349: LD_STRING 
8351: ST_TO_ADDR
// hc_gallery =  ;
8352: LD_ADDR_OWVAR 33
8356: PUSH
8357: LD_STRING 
8359: ST_TO_ADDR
// un = CreateHuman ;
8360: LD_ADDR_VAR 0 15
8364: PUSH
8365: CALL_OW 44
8369: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
8370: LD_VAR 0 15
8374: PPUSH
8375: LD_VAR 0 9
8379: PPUSH
8380: LD_INT 0
8382: PPUSH
8383: CALL_OW 49
// end ;
8387: GO 8258
8389: POP
8390: POP
// for i = 1 to sniperCount do
8391: LD_ADDR_VAR 0 14
8395: PUSH
8396: DOUBLE
8397: LD_INT 1
8399: DEC
8400: ST_TO_ADDR
8401: LD_VAR 0 4
8405: PUSH
8406: FOR_TO
8407: IFFALSE 8537
// begin uc_side = side ;
8409: LD_ADDR_OWVAR 20
8413: PUSH
8414: LD_VAR 0 1
8418: ST_TO_ADDR
// uc_nation = nation ;
8419: LD_ADDR_OWVAR 21
8423: PUSH
8424: LD_VAR 0 2
8428: ST_TO_ADDR
// hc_skills = [ skil , Rand ( 0 , skil ) , Rand ( 0 , skil ) , Rand ( 0 , skil ) ] ;
8429: LD_ADDR_OWVAR 31
8433: PUSH
8434: LD_VAR 0 8
8438: PUSH
8439: LD_INT 0
8441: PPUSH
8442: LD_VAR 0 8
8446: PPUSH
8447: CALL_OW 12
8451: PUSH
8452: LD_INT 0
8454: PPUSH
8455: LD_VAR 0 8
8459: PPUSH
8460: CALL_OW 12
8464: PUSH
8465: LD_INT 0
8467: PPUSH
8468: LD_VAR 0 8
8472: PPUSH
8473: CALL_OW 12
8477: PUSH
8478: EMPTY
8479: LIST
8480: LIST
8481: LIST
8482: LIST
8483: ST_TO_ADDR
// hc_class = 5 ;
8484: LD_ADDR_OWVAR 28
8488: PUSH
8489: LD_INT 5
8491: ST_TO_ADDR
// hc_name =  ;
8492: LD_ADDR_OWVAR 26
8496: PUSH
8497: LD_STRING 
8499: ST_TO_ADDR
// hc_gallery =  ;
8500: LD_ADDR_OWVAR 33
8504: PUSH
8505: LD_STRING 
8507: ST_TO_ADDR
// un = CreateHuman ;
8508: LD_ADDR_VAR 0 15
8512: PUSH
8513: CALL_OW 44
8517: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
8518: LD_VAR 0 15
8522: PPUSH
8523: LD_VAR 0 9
8527: PPUSH
8528: LD_INT 0
8530: PPUSH
8531: CALL_OW 49
// end ;
8535: GO 8406
8537: POP
8538: POP
// for i = 1 to bazookCount do
8539: LD_ADDR_VAR 0 14
8543: PUSH
8544: DOUBLE
8545: LD_INT 1
8547: DEC
8548: ST_TO_ADDR
8549: LD_VAR 0 5
8553: PUSH
8554: FOR_TO
8555: IFFALSE 8693
// begin uc_side = side ;
8557: LD_ADDR_OWVAR 20
8561: PUSH
8562: LD_VAR 0 1
8566: ST_TO_ADDR
// uc_nation = nation ;
8567: LD_ADDR_OWVAR 21
8571: PUSH
8572: LD_VAR 0 2
8576: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , skil ) , Rand ( 0 , skil ) , Rand ( 0 , skil ) , Rand ( 0 , skil ) ] ;
8577: LD_ADDR_OWVAR 31
8581: PUSH
8582: LD_INT 0
8584: PPUSH
8585: LD_VAR 0 8
8589: PPUSH
8590: CALL_OW 12
8594: PUSH
8595: LD_INT 0
8597: PPUSH
8598: LD_VAR 0 8
8602: PPUSH
8603: CALL_OW 12
8607: PUSH
8608: LD_INT 0
8610: PPUSH
8611: LD_VAR 0 8
8615: PPUSH
8616: CALL_OW 12
8620: PUSH
8621: LD_INT 0
8623: PPUSH
8624: LD_VAR 0 8
8628: PPUSH
8629: CALL_OW 12
8633: PUSH
8634: EMPTY
8635: LIST
8636: LIST
8637: LIST
8638: LIST
8639: ST_TO_ADDR
// hc_class = 9 ;
8640: LD_ADDR_OWVAR 28
8644: PUSH
8645: LD_INT 9
8647: ST_TO_ADDR
// hc_name =  ;
8648: LD_ADDR_OWVAR 26
8652: PUSH
8653: LD_STRING 
8655: ST_TO_ADDR
// hc_gallery =  ;
8656: LD_ADDR_OWVAR 33
8660: PUSH
8661: LD_STRING 
8663: ST_TO_ADDR
// un = CreateHuman ;
8664: LD_ADDR_VAR 0 15
8668: PUSH
8669: CALL_OW 44
8673: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
8674: LD_VAR 0 15
8678: PPUSH
8679: LD_VAR 0 9
8683: PPUSH
8684: LD_INT 0
8686: PPUSH
8687: CALL_OW 49
// end ;
8691: GO 8554
8693: POP
8694: POP
// for i = 1 to mortalCount do
8695: LD_ADDR_VAR 0 14
8699: PUSH
8700: DOUBLE
8701: LD_INT 1
8703: DEC
8704: ST_TO_ADDR
8705: LD_VAR 0 6
8709: PUSH
8710: FOR_TO
8711: IFFALSE 8841
// begin uc_side = side ;
8713: LD_ADDR_OWVAR 20
8717: PUSH
8718: LD_VAR 0 1
8722: ST_TO_ADDR
// uc_nation = nation ;
8723: LD_ADDR_OWVAR 21
8727: PUSH
8728: LD_VAR 0 2
8732: ST_TO_ADDR
// hc_skills = [ skil , Rand ( 0 , skil ) , Rand ( 0 , skil ) , Rand ( 0 , skil ) ] ;
8733: LD_ADDR_OWVAR 31
8737: PUSH
8738: LD_VAR 0 8
8742: PUSH
8743: LD_INT 0
8745: PPUSH
8746: LD_VAR 0 8
8750: PPUSH
8751: CALL_OW 12
8755: PUSH
8756: LD_INT 0
8758: PPUSH
8759: LD_VAR 0 8
8763: PPUSH
8764: CALL_OW 12
8768: PUSH
8769: LD_INT 0
8771: PPUSH
8772: LD_VAR 0 8
8776: PPUSH
8777: CALL_OW 12
8781: PUSH
8782: EMPTY
8783: LIST
8784: LIST
8785: LIST
8786: LIST
8787: ST_TO_ADDR
// hc_class = 8 ;
8788: LD_ADDR_OWVAR 28
8792: PUSH
8793: LD_INT 8
8795: ST_TO_ADDR
// hc_name =  ;
8796: LD_ADDR_OWVAR 26
8800: PUSH
8801: LD_STRING 
8803: ST_TO_ADDR
// hc_gallery =  ;
8804: LD_ADDR_OWVAR 33
8808: PUSH
8809: LD_STRING 
8811: ST_TO_ADDR
// un = CreateHuman ;
8812: LD_ADDR_VAR 0 15
8816: PUSH
8817: CALL_OW 44
8821: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
8822: LD_VAR 0 15
8826: PPUSH
8827: LD_VAR 0 9
8831: PPUSH
8832: LD_INT 0
8834: PPUSH
8835: CALL_OW 49
// end ;
8839: GO 8710
8841: POP
8842: POP
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] , [ f_lives , 1000 ] ] ) ;
8843: LD_ADDR_VAR 0 18
8847: PUSH
8848: LD_INT 22
8850: PUSH
8851: LD_VAR 0 1
8855: PUSH
8856: EMPTY
8857: LIST
8858: LIST
8859: PUSH
8860: LD_INT 2
8862: PUSH
8863: LD_INT 25
8865: PUSH
8866: LD_INT 1
8868: PUSH
8869: EMPTY
8870: LIST
8871: LIST
8872: PUSH
8873: LD_INT 25
8875: PUSH
8876: LD_INT 5
8878: PUSH
8879: EMPTY
8880: LIST
8881: LIST
8882: PUSH
8883: LD_INT 25
8885: PUSH
8886: LD_INT 8
8888: PUSH
8889: EMPTY
8890: LIST
8891: LIST
8892: PUSH
8893: LD_INT 25
8895: PUSH
8896: LD_INT 9
8898: PUSH
8899: EMPTY
8900: LIST
8901: LIST
8902: PUSH
8903: EMPTY
8904: LIST
8905: LIST
8906: LIST
8907: LIST
8908: LIST
8909: PUSH
8910: LD_INT 24
8912: PUSH
8913: LD_INT 1000
8915: PUSH
8916: EMPTY
8917: LIST
8918: LIST
8919: PUSH
8920: EMPTY
8921: LIST
8922: LIST
8923: LIST
8924: PPUSH
8925: CALL_OW 69
8929: ST_TO_ADDR
// medic_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] ] ) ;
8930: LD_ADDR_VAR 0 17
8934: PUSH
8935: LD_INT 22
8937: PUSH
8938: LD_VAR 0 1
8942: PUSH
8943: EMPTY
8944: LIST
8945: LIST
8946: PUSH
8947: LD_INT 25
8949: PUSH
8950: LD_INT 4
8952: PUSH
8953: EMPTY
8954: LIST
8955: LIST
8956: PUSH
8957: EMPTY
8958: LIST
8959: LIST
8960: PPUSH
8961: CALL_OW 69
8965: ST_TO_ADDR
// for i = 1 to soldiersOK_list do
8966: LD_ADDR_VAR 0 14
8970: PUSH
8971: DOUBLE
8972: LD_INT 1
8974: DEC
8975: ST_TO_ADDR
8976: LD_VAR 0 18
8980: PUSH
8981: FOR_TO
8982: IFFALSE 9011
// begin AddComAgressiveMove ( soldiersOK_list [ i ] , targetX , targetY ) ;
8984: LD_VAR 0 18
8988: PUSH
8989: LD_VAR 0 14
8993: ARRAY
8994: PPUSH
8995: LD_VAR 0 11
8999: PPUSH
9000: LD_VAR 0 12
9004: PPUSH
9005: CALL_OW 174
// end ;
9009: GO 8981
9011: POP
9012: POP
// if medic_list > 0 and soldiersOK_list > 0 then
9013: LD_VAR 0 17
9017: PUSH
9018: LD_INT 0
9020: GREATER
9021: PUSH
9022: LD_VAR 0 18
9026: PUSH
9027: LD_INT 0
9029: GREATER
9030: AND
9031: IFFALSE 9317
// begin repeat begin wait ( 0 0$3 ) ;
9033: LD_INT 105
9035: PPUSH
9036: CALL_OW 67
// damageUnit_list = FilterAllUnits ( [ [ f_side , side ] , [ f_and , [ f_not , [ f_lives , 550 ] ] , [ f_lives , 250 ] ] ] ) ;
9040: LD_ADDR_VAR 0 16
9044: PUSH
9045: LD_INT 22
9047: PUSH
9048: LD_VAR 0 1
9052: PUSH
9053: EMPTY
9054: LIST
9055: LIST
9056: PUSH
9057: LD_INT 1
9059: PUSH
9060: LD_INT 3
9062: PUSH
9063: LD_INT 24
9065: PUSH
9066: LD_INT 550
9068: PUSH
9069: EMPTY
9070: LIST
9071: LIST
9072: PUSH
9073: EMPTY
9074: LIST
9075: LIST
9076: PUSH
9077: LD_INT 24
9079: PUSH
9080: LD_INT 250
9082: PUSH
9083: EMPTY
9084: LIST
9085: LIST
9086: PUSH
9087: EMPTY
9088: LIST
9089: LIST
9090: LIST
9091: PUSH
9092: EMPTY
9093: LIST
9094: LIST
9095: PPUSH
9096: CALL_OW 69
9100: ST_TO_ADDR
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] , [ f_lives , 1000 ] ] ) ;
9101: LD_ADDR_VAR 0 18
9105: PUSH
9106: LD_INT 22
9108: PUSH
9109: LD_VAR 0 1
9113: PUSH
9114: EMPTY
9115: LIST
9116: LIST
9117: PUSH
9118: LD_INT 2
9120: PUSH
9121: LD_INT 25
9123: PUSH
9124: LD_INT 1
9126: PUSH
9127: EMPTY
9128: LIST
9129: LIST
9130: PUSH
9131: LD_INT 25
9133: PUSH
9134: LD_INT 5
9136: PUSH
9137: EMPTY
9138: LIST
9139: LIST
9140: PUSH
9141: LD_INT 25
9143: PUSH
9144: LD_INT 8
9146: PUSH
9147: EMPTY
9148: LIST
9149: LIST
9150: PUSH
9151: LD_INT 25
9153: PUSH
9154: LD_INT 9
9156: PUSH
9157: EMPTY
9158: LIST
9159: LIST
9160: PUSH
9161: EMPTY
9162: LIST
9163: LIST
9164: LIST
9165: LIST
9166: LIST
9167: PUSH
9168: LD_INT 24
9170: PUSH
9171: LD_INT 1000
9173: PUSH
9174: EMPTY
9175: LIST
9176: LIST
9177: PUSH
9178: EMPTY
9179: LIST
9180: LIST
9181: LIST
9182: PPUSH
9183: CALL_OW 69
9187: ST_TO_ADDR
// for i = 1 to damageUnit_list + 0 do
9188: LD_ADDR_VAR 0 14
9192: PUSH
9193: DOUBLE
9194: LD_INT 1
9196: DEC
9197: ST_TO_ADDR
9198: LD_VAR 0 16
9202: PUSH
9203: LD_INT 0
9205: PLUS
9206: PUSH
9207: FOR_TO
9208: IFFALSE 9258
// begin ComMoveToArea ( damageUnit_list [ i ] , healArea ) ;
9210: LD_VAR 0 16
9214: PUSH
9215: LD_VAR 0 14
9219: ARRAY
9220: PPUSH
9221: LD_VAR 0 10
9225: PPUSH
9226: CALL_OW 113
// AddComHeal ( medic_list [ i ] , damageUnit_list [ i ] ) ;
9230: LD_VAR 0 17
9234: PUSH
9235: LD_VAR 0 14
9239: ARRAY
9240: PPUSH
9241: LD_VAR 0 16
9245: PUSH
9246: LD_VAR 0 14
9250: ARRAY
9251: PPUSH
9252: CALL_OW 188
// end ;
9256: GO 9207
9258: POP
9259: POP
// for i = 1 to soldiersOK_list do
9260: LD_ADDR_VAR 0 14
9264: PUSH
9265: DOUBLE
9266: LD_INT 1
9268: DEC
9269: ST_TO_ADDR
9270: LD_VAR 0 18
9274: PUSH
9275: FOR_TO
9276: IFFALSE 9305
// begin ComAgressiveMove ( soldiersOK_list [ i ] , targetX , targetY ) ;
9278: LD_VAR 0 18
9282: PUSH
9283: LD_VAR 0 14
9287: ARRAY
9288: PPUSH
9289: LD_VAR 0 11
9293: PPUSH
9294: LD_VAR 0 12
9298: PPUSH
9299: CALL_OW 114
// end ;
9303: GO 9275
9305: POP
9306: POP
// end until medicCount = 0 ;
9307: LD_VAR 0 7
9311: PUSH
9312: LD_INT 0
9314: EQUAL
9315: IFFALSE 9033
// end ; end ;
9317: LD_VAR 0 13
9321: RET
// export function RespawnAttackVehicle ( area , side , vehCount , mehskill , nation , vehengine , vehcontrol , Ruenableweapon , ArenableWeapon , amEnableWeapon , repairArea , targetX , targetY ) ; var i , j , rutemp , artemp , amtemp , lastIndex1 , lastIndex2 , lastIndex3 , veh , tempTable , ruWeaponTab , arWeaponTab , amWeaponTab , ruChassisTab , arChassisTab , amChassisTab , Vehicle_list , VehicleOK_list , damageVehicle_list , emptyVehicle_list , mechanicInside_list , mechanicOutside_list ; begin
9322: LD_INT 0
9324: PPUSH
9325: PPUSH
9326: PPUSH
9327: PPUSH
9328: PPUSH
9329: PPUSH
9330: PPUSH
9331: PPUSH
9332: PPUSH
9333: PPUSH
9334: PPUSH
9335: PPUSH
9336: PPUSH
9337: PPUSH
9338: PPUSH
9339: PPUSH
9340: PPUSH
9341: PPUSH
9342: PPUSH
9343: PPUSH
9344: PPUSH
9345: PPUSH
9346: PPUSH
// ruWeaponTab = ruenableweapon ;
9347: LD_ADDR_VAR 0 25
9351: PUSH
9352: LD_VAR 0 8
9356: ST_TO_ADDR
// ruChassisTab = [ 21 , 22 , 23 , 24 ] ;
9357: LD_ADDR_VAR 0 28
9361: PUSH
9362: LD_INT 21
9364: PUSH
9365: LD_INT 22
9367: PUSH
9368: LD_INT 23
9370: PUSH
9371: LD_INT 24
9373: PUSH
9374: EMPTY
9375: LIST
9376: LIST
9377: LIST
9378: LIST
9379: ST_TO_ADDR
// arWeaponTab = arenableweapon ;
9380: LD_ADDR_VAR 0 26
9384: PUSH
9385: LD_VAR 0 9
9389: ST_TO_ADDR
// arChassisTab = [ 11 , 12 , 13 , 14 ] ;
9390: LD_ADDR_VAR 0 29
9394: PUSH
9395: LD_INT 11
9397: PUSH
9398: LD_INT 12
9400: PUSH
9401: LD_INT 13
9403: PUSH
9404: LD_INT 14
9406: PUSH
9407: EMPTY
9408: LIST
9409: LIST
9410: LIST
9411: LIST
9412: ST_TO_ADDR
// amWeaponTab = amenableweapon ;
9413: LD_ADDR_VAR 0 27
9417: PUSH
9418: LD_VAR 0 10
9422: ST_TO_ADDR
// amChassisTab = [ 1 , 2 , 3 , 4 , 5 ] ;
9423: LD_ADDR_VAR 0 30
9427: PUSH
9428: LD_INT 1
9430: PUSH
9431: LD_INT 2
9433: PUSH
9434: LD_INT 3
9436: PUSH
9437: LD_INT 4
9439: PUSH
9440: LD_INT 5
9442: PUSH
9443: EMPTY
9444: LIST
9445: LIST
9446: LIST
9447: LIST
9448: LIST
9449: ST_TO_ADDR
// amtemp = amWeaponTab ;
9450: LD_ADDR_VAR 0 19
9454: PUSH
9455: LD_VAR 0 27
9459: ST_TO_ADDR
// artemp = arWeaponTab ;
9460: LD_ADDR_VAR 0 18
9464: PUSH
9465: LD_VAR 0 26
9469: ST_TO_ADDR
// rutemp = ruWeaponTab ;
9470: LD_ADDR_VAR 0 17
9474: PUSH
9475: LD_VAR 0 25
9479: ST_TO_ADDR
// lastIndex1 = SizeTab ( amtemp ) ;
9480: LD_ADDR_VAR 0 20
9484: PUSH
9485: LD_VAR 0 19
9489: PPUSH
9490: CALL 5131 0 1
9494: ST_TO_ADDR
// lastIndex2 = SizeTab ( artemp ) ;
9495: LD_ADDR_VAR 0 21
9499: PUSH
9500: LD_VAR 0 18
9504: PPUSH
9505: CALL 5131 0 1
9509: ST_TO_ADDR
// lastIndex3 = SizeTab ( rutemp ) ;
9510: LD_ADDR_VAR 0 22
9514: PUSH
9515: LD_VAR 0 17
9519: PPUSH
9520: CALL 5131 0 1
9524: ST_TO_ADDR
// repeat begin wait ( 0 0$1 ) ;
9525: LD_INT 35
9527: PPUSH
9528: CALL_OW 67
// if nation = 1 then
9532: LD_VAR 0 5
9536: PUSH
9537: LD_INT 1
9539: EQUAL
9540: IFFALSE 10082
// begin uc_side = side ;
9542: LD_ADDR_OWVAR 20
9546: PUSH
9547: LD_VAR 0 2
9551: ST_TO_ADDR
// uc_nation = nation ;
9552: LD_ADDR_OWVAR 21
9556: PUSH
9557: LD_VAR 0 5
9561: ST_TO_ADDR
// vc_engine = vehengine ;
9562: LD_ADDR_OWVAR 39
9566: PUSH
9567: LD_VAR 0 6
9571: ST_TO_ADDR
// vc_control = vehcontrol ;
9572: LD_ADDR_OWVAR 38
9576: PUSH
9577: LD_VAR 0 7
9581: ST_TO_ADDR
// vc_weapon = amWeaponTab [ Rand ( 1 , lastIndex1 ) ] ;
9582: LD_ADDR_OWVAR 40
9586: PUSH
9587: LD_VAR 0 27
9591: PUSH
9592: LD_INT 1
9594: PPUSH
9595: LD_VAR 0 20
9599: PPUSH
9600: CALL_OW 12
9604: ARRAY
9605: ST_TO_ADDR
// for j = 1 to amWeaponTab do
9606: LD_ADDR_VAR 0 16
9610: PUSH
9611: DOUBLE
9612: LD_INT 1
9614: DEC
9615: ST_TO_ADDR
9616: LD_VAR 0 27
9620: PUSH
9621: FOR_TO
9622: IFFALSE 9917
// begin if amWeaponTab [ j ] = 2 or amWeaponTab [ j ] = 3 then
9624: LD_VAR 0 27
9628: PUSH
9629: LD_VAR 0 16
9633: ARRAY
9634: PUSH
9635: LD_INT 2
9637: EQUAL
9638: PUSH
9639: LD_VAR 0 27
9643: PUSH
9644: LD_VAR 0 16
9648: ARRAY
9649: PUSH
9650: LD_INT 3
9652: EQUAL
9653: OR
9654: IFFALSE 9705
// begin amChassisTab = [ 1 , 2 , 3 , 4 , 5 ] ;
9656: LD_ADDR_VAR 0 30
9660: PUSH
9661: LD_INT 1
9663: PUSH
9664: LD_INT 2
9666: PUSH
9667: LD_INT 3
9669: PUSH
9670: LD_INT 4
9672: PUSH
9673: LD_INT 5
9675: PUSH
9676: EMPTY
9677: LIST
9678: LIST
9679: LIST
9680: LIST
9681: LIST
9682: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , 5 ) ] ;
9683: LD_ADDR_OWVAR 37
9687: PUSH
9688: LD_VAR 0 30
9692: PUSH
9693: LD_INT 1
9695: PPUSH
9696: LD_INT 5
9698: PPUSH
9699: CALL_OW 12
9703: ARRAY
9704: ST_TO_ADDR
// end ; if amWeaponTab [ j ] = 4 or amWeaponTab [ j ] = 5 or amWeaponTab [ j ] = 9 or amWeaponTab [ j ] = 11 or amWeaponTab [ j ] = 7 then
9705: LD_VAR 0 27
9709: PUSH
9710: LD_VAR 0 16
9714: ARRAY
9715: PUSH
9716: LD_INT 4
9718: EQUAL
9719: PUSH
9720: LD_VAR 0 27
9724: PUSH
9725: LD_VAR 0 16
9729: ARRAY
9730: PUSH
9731: LD_INT 5
9733: EQUAL
9734: OR
9735: PUSH
9736: LD_VAR 0 27
9740: PUSH
9741: LD_VAR 0 16
9745: ARRAY
9746: PUSH
9747: LD_INT 9
9749: EQUAL
9750: OR
9751: PUSH
9752: LD_VAR 0 27
9756: PUSH
9757: LD_VAR 0 16
9761: ARRAY
9762: PUSH
9763: LD_INT 11
9765: EQUAL
9766: OR
9767: PUSH
9768: LD_VAR 0 27
9772: PUSH
9773: LD_VAR 0 16
9777: ARRAY
9778: PUSH
9779: LD_INT 7
9781: EQUAL
9782: OR
9783: IFFALSE 9830
// begin amChassisTab = [ 2 , 3 , 4 , 5 ] ;
9785: LD_ADDR_VAR 0 30
9789: PUSH
9790: LD_INT 2
9792: PUSH
9793: LD_INT 3
9795: PUSH
9796: LD_INT 4
9798: PUSH
9799: LD_INT 5
9801: PUSH
9802: EMPTY
9803: LIST
9804: LIST
9805: LIST
9806: LIST
9807: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , 4 ) ] ;
9808: LD_ADDR_OWVAR 37
9812: PUSH
9813: LD_VAR 0 30
9817: PUSH
9818: LD_INT 1
9820: PPUSH
9821: LD_INT 4
9823: PPUSH
9824: CALL_OW 12
9828: ARRAY
9829: ST_TO_ADDR
// end ; if amWeaponTab [ j ] = 8 or amWeaponTab [ j ] = 6 or amWeaponTab [ j ] = 10 then
9830: LD_VAR 0 27
9834: PUSH
9835: LD_VAR 0 16
9839: ARRAY
9840: PUSH
9841: LD_INT 8
9843: EQUAL
9844: PUSH
9845: LD_VAR 0 27
9849: PUSH
9850: LD_VAR 0 16
9854: ARRAY
9855: PUSH
9856: LD_INT 6
9858: EQUAL
9859: OR
9860: PUSH
9861: LD_VAR 0 27
9865: PUSH
9866: LD_VAR 0 16
9870: ARRAY
9871: PUSH
9872: LD_INT 10
9874: EQUAL
9875: OR
9876: IFFALSE 9915
// begin amChassisTab = [ 4 , 5 ] ;
9878: LD_ADDR_VAR 0 30
9882: PUSH
9883: LD_INT 4
9885: PUSH
9886: LD_INT 5
9888: PUSH
9889: EMPTY
9890: LIST
9891: LIST
9892: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , 2 ) ] ;
9893: LD_ADDR_OWVAR 37
9897: PUSH
9898: LD_VAR 0 30
9902: PUSH
9903: LD_INT 1
9905: PPUSH
9906: LD_INT 2
9908: PPUSH
9909: CALL_OW 12
9913: ARRAY
9914: ST_TO_ADDR
// end ; end ;
9915: GO 9621
9917: POP
9918: POP
// veh = CreateVehicle ;
9919: LD_ADDR_VAR 0 23
9923: PUSH
9924: CALL_OW 45
9928: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
9929: LD_VAR 0 23
9933: PPUSH
9934: LD_VAR 0 1
9938: PPUSH
9939: LD_INT 0
9941: PPUSH
9942: CALL_OW 49
// if vehcontrol = 1 then
9946: LD_VAR 0 7
9950: PUSH
9951: LD_INT 1
9953: EQUAL
9954: IFFALSE 10068
// begin hc_class = 3 ;
9956: LD_ADDR_OWVAR 28
9960: PUSH
9961: LD_INT 3
9963: ST_TO_ADDR
// hc_name =  ;
9964: LD_ADDR_OWVAR 26
9968: PUSH
9969: LD_STRING 
9971: ST_TO_ADDR
// hc_gallery =  ;
9972: LD_ADDR_OWVAR 33
9976: PUSH
9977: LD_STRING 
9979: ST_TO_ADDR
// hc_sex = [ Rand ( sex_female , sex_male ) ] ;
9980: LD_ADDR_OWVAR 27
9984: PUSH
9985: LD_INT 2
9987: PPUSH
9988: LD_INT 1
9990: PPUSH
9991: CALL_OW 12
9995: PUSH
9996: EMPTY
9997: LIST
9998: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , mehskill ) , Rand ( 0 , mehskill ) , mehskill , Rand ( 0 , mehskill ) ] ;
9999: LD_ADDR_OWVAR 31
10003: PUSH
10004: LD_INT 0
10006: PPUSH
10007: LD_VAR 0 4
10011: PPUSH
10012: CALL_OW 12
10016: PUSH
10017: LD_INT 0
10019: PPUSH
10020: LD_VAR 0 4
10024: PPUSH
10025: CALL_OW 12
10029: PUSH
10030: LD_VAR 0 4
10034: PUSH
10035: LD_INT 0
10037: PPUSH
10038: LD_VAR 0 4
10042: PPUSH
10043: CALL_OW 12
10047: PUSH
10048: EMPTY
10049: LIST
10050: LIST
10051: LIST
10052: LIST
10053: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , veh ) ;
10054: CALL_OW 44
10058: PPUSH
10059: LD_VAR 0 23
10063: PPUSH
10064: CALL_OW 52
// end ; i = i + 1 ;
10068: LD_ADDR_VAR 0 15
10072: PUSH
10073: LD_VAR 0 15
10077: PUSH
10078: LD_INT 1
10080: PLUS
10081: ST_TO_ADDR
// end ; if nation = 2 then
10082: LD_VAR 0 5
10086: PUSH
10087: LD_INT 2
10089: EQUAL
10090: IFFALSE 10590
// begin uc_side = side ;
10092: LD_ADDR_OWVAR 20
10096: PUSH
10097: LD_VAR 0 2
10101: ST_TO_ADDR
// uc_nation = nation ;
10102: LD_ADDR_OWVAR 21
10106: PUSH
10107: LD_VAR 0 5
10111: ST_TO_ADDR
// vc_engine = vehengine ;
10112: LD_ADDR_OWVAR 39
10116: PUSH
10117: LD_VAR 0 6
10121: ST_TO_ADDR
// vc_control = vehcontrol ;
10122: LD_ADDR_OWVAR 38
10126: PUSH
10127: LD_VAR 0 7
10131: ST_TO_ADDR
// vc_weapon = arWeaponTab [ Rand ( 1 , lastIndex2 ) ] ;
10132: LD_ADDR_OWVAR 40
10136: PUSH
10137: LD_VAR 0 26
10141: PUSH
10142: LD_INT 1
10144: PPUSH
10145: LD_VAR 0 21
10149: PPUSH
10150: CALL_OW 12
10154: ARRAY
10155: ST_TO_ADDR
// for j = 1 to arWeaponTab do
10156: LD_ADDR_VAR 0 16
10160: PUSH
10161: DOUBLE
10162: LD_INT 1
10164: DEC
10165: ST_TO_ADDR
10166: LD_VAR 0 26
10170: PUSH
10171: FOR_TO
10172: IFFALSE 10425
// begin if arWeaponTab [ j ] = 24 or arWeaponTab [ j ] = 22 or arWeaponTab [ j ] = 23 or arWeaponTab [ j ] = 30 then
10174: LD_VAR 0 26
10178: PUSH
10179: LD_VAR 0 16
10183: ARRAY
10184: PUSH
10185: LD_INT 24
10187: EQUAL
10188: PUSH
10189: LD_VAR 0 26
10193: PUSH
10194: LD_VAR 0 16
10198: ARRAY
10199: PUSH
10200: LD_INT 22
10202: EQUAL
10203: OR
10204: PUSH
10205: LD_VAR 0 26
10209: PUSH
10210: LD_VAR 0 16
10214: ARRAY
10215: PUSH
10216: LD_INT 23
10218: EQUAL
10219: OR
10220: PUSH
10221: LD_VAR 0 26
10225: PUSH
10226: LD_VAR 0 16
10230: ARRAY
10231: PUSH
10232: LD_INT 30
10234: EQUAL
10235: OR
10236: IFFALSE 10283
// begin arChassisTab = [ 11 , 12 , 13 , 14 ] ;
10238: LD_ADDR_VAR 0 29
10242: PUSH
10243: LD_INT 11
10245: PUSH
10246: LD_INT 12
10248: PUSH
10249: LD_INT 13
10251: PUSH
10252: LD_INT 14
10254: PUSH
10255: EMPTY
10256: LIST
10257: LIST
10258: LIST
10259: LIST
10260: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , 4 ) ] ;
10261: LD_ADDR_OWVAR 37
10265: PUSH
10266: LD_VAR 0 29
10270: PUSH
10271: LD_INT 1
10273: PPUSH
10274: LD_INT 4
10276: PPUSH
10277: CALL_OW 12
10281: ARRAY
10282: ST_TO_ADDR
// end ; if arWeaponTab [ j ] = 29 or arWeaponTab [ j ] = 28 or arWeaponTab [ j ] = 27 or arWeaponTab [ j ] = 26 or arWeaponTab [ j ] = 25 then
10283: LD_VAR 0 26
10287: PUSH
10288: LD_VAR 0 16
10292: ARRAY
10293: PUSH
10294: LD_INT 29
10296: EQUAL
10297: PUSH
10298: LD_VAR 0 26
10302: PUSH
10303: LD_VAR 0 16
10307: ARRAY
10308: PUSH
10309: LD_INT 28
10311: EQUAL
10312: OR
10313: PUSH
10314: LD_VAR 0 26
10318: PUSH
10319: LD_VAR 0 16
10323: ARRAY
10324: PUSH
10325: LD_INT 27
10327: EQUAL
10328: OR
10329: PUSH
10330: LD_VAR 0 26
10334: PUSH
10335: LD_VAR 0 16
10339: ARRAY
10340: PUSH
10341: LD_INT 26
10343: EQUAL
10344: OR
10345: PUSH
10346: LD_VAR 0 26
10350: PUSH
10351: LD_VAR 0 16
10355: ARRAY
10356: PUSH
10357: LD_INT 25
10359: EQUAL
10360: OR
10361: IFFALSE 10400
// begin arChassisTab = [ 13 , 14 ] ;
10363: LD_ADDR_VAR 0 29
10367: PUSH
10368: LD_INT 13
10370: PUSH
10371: LD_INT 14
10373: PUSH
10374: EMPTY
10375: LIST
10376: LIST
10377: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , 2 ) ] ;
10378: LD_ADDR_OWVAR 37
10382: PUSH
10383: LD_VAR 0 29
10387: PUSH
10388: LD_INT 1
10390: PPUSH
10391: LD_INT 2
10393: PPUSH
10394: CALL_OW 12
10398: ARRAY
10399: ST_TO_ADDR
// end ; arChassisTab = [ 11 , 12 , 13 , 14 ] ;
10400: LD_ADDR_VAR 0 29
10404: PUSH
10405: LD_INT 11
10407: PUSH
10408: LD_INT 12
10410: PUSH
10411: LD_INT 13
10413: PUSH
10414: LD_INT 14
10416: PUSH
10417: EMPTY
10418: LIST
10419: LIST
10420: LIST
10421: LIST
10422: ST_TO_ADDR
// end ;
10423: GO 10171
10425: POP
10426: POP
// veh = CreateVehicle ;
10427: LD_ADDR_VAR 0 23
10431: PUSH
10432: CALL_OW 45
10436: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
10437: LD_VAR 0 23
10441: PPUSH
10442: LD_VAR 0 1
10446: PPUSH
10447: LD_INT 0
10449: PPUSH
10450: CALL_OW 49
// if vehcontrol = 1 then
10454: LD_VAR 0 7
10458: PUSH
10459: LD_INT 1
10461: EQUAL
10462: IFFALSE 10576
// begin hc_class = 3 ;
10464: LD_ADDR_OWVAR 28
10468: PUSH
10469: LD_INT 3
10471: ST_TO_ADDR
// hc_name =  ;
10472: LD_ADDR_OWVAR 26
10476: PUSH
10477: LD_STRING 
10479: ST_TO_ADDR
// hc_gallery =  ;
10480: LD_ADDR_OWVAR 33
10484: PUSH
10485: LD_STRING 
10487: ST_TO_ADDR
// hc_sex = [ Rand ( sex_female , sex_male ) ] ;
10488: LD_ADDR_OWVAR 27
10492: PUSH
10493: LD_INT 2
10495: PPUSH
10496: LD_INT 1
10498: PPUSH
10499: CALL_OW 12
10503: PUSH
10504: EMPTY
10505: LIST
10506: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , mehskill ) , Rand ( 0 , mehskill ) , mehskill , Rand ( 0 , mehskill ) ] ;
10507: LD_ADDR_OWVAR 31
10511: PUSH
10512: LD_INT 0
10514: PPUSH
10515: LD_VAR 0 4
10519: PPUSH
10520: CALL_OW 12
10524: PUSH
10525: LD_INT 0
10527: PPUSH
10528: LD_VAR 0 4
10532: PPUSH
10533: CALL_OW 12
10537: PUSH
10538: LD_VAR 0 4
10542: PUSH
10543: LD_INT 0
10545: PPUSH
10546: LD_VAR 0 4
10550: PPUSH
10551: CALL_OW 12
10555: PUSH
10556: EMPTY
10557: LIST
10558: LIST
10559: LIST
10560: LIST
10561: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , veh ) ;
10562: CALL_OW 44
10566: PPUSH
10567: LD_VAR 0 23
10571: PPUSH
10572: CALL_OW 52
// end ; i = i + 1 ;
10576: LD_ADDR_VAR 0 15
10580: PUSH
10581: LD_VAR 0 15
10585: PUSH
10586: LD_INT 1
10588: PLUS
10589: ST_TO_ADDR
// end ; if nation = 3 then
10590: LD_VAR 0 5
10594: PUSH
10595: LD_INT 3
10597: EQUAL
10598: IFFALSE 10849
// begin uc_side = side ;
10600: LD_ADDR_OWVAR 20
10604: PUSH
10605: LD_VAR 0 2
10609: ST_TO_ADDR
// uc_nation = nation ;
10610: LD_ADDR_OWVAR 21
10614: PUSH
10615: LD_VAR 0 5
10619: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , 4 ) ] ;
10620: LD_ADDR_OWVAR 37
10624: PUSH
10625: LD_VAR 0 28
10629: PUSH
10630: LD_INT 1
10632: PPUSH
10633: LD_INT 4
10635: PPUSH
10636: CALL_OW 12
10640: ARRAY
10641: ST_TO_ADDR
// vc_engine = vehengine ;
10642: LD_ADDR_OWVAR 39
10646: PUSH
10647: LD_VAR 0 6
10651: ST_TO_ADDR
// vc_control = vehcontrol ;
10652: LD_ADDR_OWVAR 38
10656: PUSH
10657: LD_VAR 0 7
10661: ST_TO_ADDR
// vc_weapon = ruWeaponTab [ Rand ( 1 , lastIndex2 ) ] ;
10662: LD_ADDR_OWVAR 40
10666: PUSH
10667: LD_VAR 0 25
10671: PUSH
10672: LD_INT 1
10674: PPUSH
10675: LD_VAR 0 21
10679: PPUSH
10680: CALL_OW 12
10684: ARRAY
10685: ST_TO_ADDR
// veh = CreateVehicle ;
10686: LD_ADDR_VAR 0 23
10690: PUSH
10691: CALL_OW 45
10695: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
10696: LD_VAR 0 23
10700: PPUSH
10701: LD_VAR 0 1
10705: PPUSH
10706: LD_INT 0
10708: PPUSH
10709: CALL_OW 49
// if vehcontrol = 1 then
10713: LD_VAR 0 7
10717: PUSH
10718: LD_INT 1
10720: EQUAL
10721: IFFALSE 10835
// begin hc_class = 3 ;
10723: LD_ADDR_OWVAR 28
10727: PUSH
10728: LD_INT 3
10730: ST_TO_ADDR
// hc_name =  ;
10731: LD_ADDR_OWVAR 26
10735: PUSH
10736: LD_STRING 
10738: ST_TO_ADDR
// hc_gallery =  ;
10739: LD_ADDR_OWVAR 33
10743: PUSH
10744: LD_STRING 
10746: ST_TO_ADDR
// hc_sex = [ Rand ( sex_female , sex_male ) ] ;
10747: LD_ADDR_OWVAR 27
10751: PUSH
10752: LD_INT 2
10754: PPUSH
10755: LD_INT 1
10757: PPUSH
10758: CALL_OW 12
10762: PUSH
10763: EMPTY
10764: LIST
10765: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , mehskill ) , Rand ( 0 , mehskill ) , mehskill , Rand ( 0 , mehskill ) ] ;
10766: LD_ADDR_OWVAR 31
10770: PUSH
10771: LD_INT 0
10773: PPUSH
10774: LD_VAR 0 4
10778: PPUSH
10779: CALL_OW 12
10783: PUSH
10784: LD_INT 0
10786: PPUSH
10787: LD_VAR 0 4
10791: PPUSH
10792: CALL_OW 12
10796: PUSH
10797: LD_VAR 0 4
10801: PUSH
10802: LD_INT 0
10804: PPUSH
10805: LD_VAR 0 4
10809: PPUSH
10810: CALL_OW 12
10814: PUSH
10815: EMPTY
10816: LIST
10817: LIST
10818: LIST
10819: LIST
10820: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , veh ) ;
10821: CALL_OW 44
10825: PPUSH
10826: LD_VAR 0 23
10830: PPUSH
10831: CALL_OW 52
// end ; i = i + 1 ;
10835: LD_ADDR_VAR 0 15
10839: PUSH
10840: LD_VAR 0 15
10844: PUSH
10845: LD_INT 1
10847: PLUS
10848: ST_TO_ADDR
// end ; end until i = vehCount ;
10849: LD_VAR 0 15
10853: PUSH
10854: LD_VAR 0 3
10858: EQUAL
10859: IFFALSE 9525
// vehicle_list = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ;
10861: LD_ADDR_VAR 0 31
10865: PUSH
10866: LD_INT 22
10868: PUSH
10869: LD_VAR 0 2
10873: PUSH
10874: EMPTY
10875: LIST
10876: LIST
10877: PUSH
10878: LD_INT 21
10880: PUSH
10881: LD_INT 2
10883: PUSH
10884: EMPTY
10885: LIST
10886: LIST
10887: PUSH
10888: EMPTY
10889: LIST
10890: LIST
10891: PPUSH
10892: CALL_OW 69
10896: ST_TO_ADDR
// repeat begin wait ( 0 0$3 ) ;
10897: LD_INT 105
10899: PPUSH
10900: CALL_OW 67
// VehicleOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) ;
10904: LD_ADDR_VAR 0 32
10908: PUSH
10909: LD_INT 22
10911: PUSH
10912: LD_VAR 0 2
10916: PUSH
10917: EMPTY
10918: LIST
10919: LIST
10920: PUSH
10921: LD_INT 21
10923: PUSH
10924: LD_INT 2
10926: PUSH
10927: EMPTY
10928: LIST
10929: LIST
10930: PUSH
10931: LD_INT 24
10933: PUSH
10934: LD_INT 1000
10936: PUSH
10937: EMPTY
10938: LIST
10939: LIST
10940: PUSH
10941: EMPTY
10942: LIST
10943: LIST
10944: LIST
10945: PPUSH
10946: CALL_OW 69
10950: ST_TO_ADDR
// damageVehicle_list = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_not , [ f_lives , 550 ] ] ] ) ;
10951: LD_ADDR_VAR 0 33
10955: PUSH
10956: LD_INT 22
10958: PUSH
10959: LD_VAR 0 2
10963: PUSH
10964: EMPTY
10965: LIST
10966: LIST
10967: PUSH
10968: LD_INT 21
10970: PUSH
10971: LD_INT 2
10973: PUSH
10974: EMPTY
10975: LIST
10976: LIST
10977: PUSH
10978: LD_INT 3
10980: PUSH
10981: LD_INT 24
10983: PUSH
10984: LD_INT 550
10986: PUSH
10987: EMPTY
10988: LIST
10989: LIST
10990: PUSH
10991: EMPTY
10992: LIST
10993: LIST
10994: PUSH
10995: EMPTY
10996: LIST
10997: LIST
10998: LIST
10999: PPUSH
11000: CALL_OW 69
11004: ST_TO_ADDR
// emptyVehicle_list = FilterUnitsInArea ( repairArea , [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] , [ f_empty ] ] ) ;
11005: LD_ADDR_VAR 0 34
11009: PUSH
11010: LD_VAR 0 11
11014: PPUSH
11015: LD_INT 22
11017: PUSH
11018: LD_VAR 0 2
11022: PUSH
11023: EMPTY
11024: LIST
11025: LIST
11026: PUSH
11027: LD_INT 21
11029: PUSH
11030: LD_INT 2
11032: PUSH
11033: EMPTY
11034: LIST
11035: LIST
11036: PUSH
11037: LD_INT 24
11039: PUSH
11040: LD_INT 1000
11042: PUSH
11043: EMPTY
11044: LIST
11045: LIST
11046: PUSH
11047: LD_INT 58
11049: PUSH
11050: EMPTY
11051: LIST
11052: PUSH
11053: EMPTY
11054: LIST
11055: LIST
11056: LIST
11057: LIST
11058: PPUSH
11059: CALL_OW 70
11063: ST_TO_ADDR
// mechanicInside_list = UnitsInside ( damageVehicle_list [ i ] ) ;
11064: LD_ADDR_VAR 0 35
11068: PUSH
11069: LD_VAR 0 33
11073: PUSH
11074: LD_VAR 0 15
11078: ARRAY
11079: PPUSH
11080: CALL_OW 313
11084: ST_TO_ADDR
// mechanicOutside_list = FilterUnitsInArea ( repairArea , [ [ f_side , side ] , [ f_class , 3 ] ] ) ;
11085: LD_ADDR_VAR 0 36
11089: PUSH
11090: LD_VAR 0 11
11094: PPUSH
11095: LD_INT 22
11097: PUSH
11098: LD_VAR 0 2
11102: PUSH
11103: EMPTY
11104: LIST
11105: LIST
11106: PUSH
11107: LD_INT 25
11109: PUSH
11110: LD_INT 3
11112: PUSH
11113: EMPTY
11114: LIST
11115: LIST
11116: PUSH
11117: EMPTY
11118: LIST
11119: LIST
11120: PPUSH
11121: CALL_OW 70
11125: ST_TO_ADDR
// if damageVehicle_list > 0 then
11126: LD_VAR 0 33
11130: PUSH
11131: LD_INT 0
11133: GREATER
11134: IFFALSE 11217
// begin for i = 1 to damageVehicle_list + 0 do
11136: LD_ADDR_VAR 0 15
11140: PUSH
11141: DOUBLE
11142: LD_INT 1
11144: DEC
11145: ST_TO_ADDR
11146: LD_VAR 0 33
11150: PUSH
11151: LD_INT 0
11153: PLUS
11154: PUSH
11155: FOR_TO
11156: IFFALSE 11215
// begin ComMoveToArea ( damageVehicle_list , repairArea ) ;
11158: LD_VAR 0 33
11162: PPUSH
11163: LD_VAR 0 11
11167: PPUSH
11168: CALL_OW 113
// AddComExitVehicle ( mechanicInside_list [ i ] ) ;
11172: LD_VAR 0 35
11176: PUSH
11177: LD_VAR 0 15
11181: ARRAY
11182: PPUSH
11183: CALL_OW 181
// AddComRepairVehicle ( mechanicInside_list [ i ] , damageVehicle_list [ i ] ) ;
11187: LD_VAR 0 35
11191: PUSH
11192: LD_VAR 0 15
11196: ARRAY
11197: PPUSH
11198: LD_VAR 0 33
11202: PUSH
11203: LD_VAR 0 15
11207: ARRAY
11208: PPUSH
11209: CALL_OW 189
// end ;
11213: GO 11155
11215: POP
11216: POP
// end ; if emptyVehicle_list > 0 then
11217: LD_VAR 0 34
11221: PUSH
11222: LD_INT 0
11224: GREATER
11225: IFFALSE 11279
// begin for i = 1 to emptyVehicle_list + 0 do
11227: LD_ADDR_VAR 0 15
11231: PUSH
11232: DOUBLE
11233: LD_INT 1
11235: DEC
11236: ST_TO_ADDR
11237: LD_VAR 0 34
11241: PUSH
11242: LD_INT 0
11244: PLUS
11245: PUSH
11246: FOR_TO
11247: IFFALSE 11277
// begin AddComEnterUnit ( mechanicOutside_list [ i ] , emptyVehicle_list [ i ] ) ;
11249: LD_VAR 0 36
11253: PUSH
11254: LD_VAR 0 15
11258: ARRAY
11259: PPUSH
11260: LD_VAR 0 34
11264: PUSH
11265: LD_VAR 0 15
11269: ARRAY
11270: PPUSH
11271: CALL_OW 180
// end ;
11275: GO 11246
11277: POP
11278: POP
// end ; if VehicleOK_list > 0 then
11279: LD_VAR 0 32
11283: PUSH
11284: LD_INT 0
11286: GREATER
11287: IFFALSE 11340
// begin for i = 1 to VehicleOK_list + 0 do
11289: LD_ADDR_VAR 0 15
11293: PUSH
11294: DOUBLE
11295: LD_INT 1
11297: DEC
11298: ST_TO_ADDR
11299: LD_VAR 0 32
11303: PUSH
11304: LD_INT 0
11306: PLUS
11307: PUSH
11308: FOR_TO
11309: IFFALSE 11338
// begin AddComAgressiveMove ( VehicleOK_list [ i ] , targetX , targetY ) ;
11311: LD_VAR 0 32
11315: PUSH
11316: LD_VAR 0 15
11320: ARRAY
11321: PPUSH
11322: LD_VAR 0 12
11326: PPUSH
11327: LD_VAR 0 13
11331: PPUSH
11332: CALL_OW 174
// end ;
11336: GO 11308
11338: POP
11339: POP
// end ; end until vehicle_list = 0 ;
11340: LD_VAR 0 31
11344: PUSH
11345: LD_INT 0
11347: EQUAL
11348: IFFALSE 10897
// end ;
11350: LD_VAR 0 14
11354: RET
// export function AttackAndDestroySibDeposit ( side , spawnArea , skill , soldCount , mortalCount , medicCount , targetX , targetY ) ; var i , un , soldiers_list , medic_list ; begin
11355: LD_INT 0
11357: PPUSH
11358: PPUSH
11359: PPUSH
11360: PPUSH
11361: PPUSH
// for i = 1 to mortalCount do
11362: LD_ADDR_VAR 0 10
11366: PUSH
11367: DOUBLE
11368: LD_INT 1
11370: DEC
11371: ST_TO_ADDR
11372: LD_VAR 0 5
11376: PUSH
11377: FOR_TO
11378: IFFALSE 11522
// begin uc_side = side ;
11380: LD_ADDR_OWVAR 20
11384: PUSH
11385: LD_VAR 0 1
11389: ST_TO_ADDR
// uc_nation = 2 ;
11390: LD_ADDR_OWVAR 21
11394: PUSH
11395: LD_INT 2
11397: ST_TO_ADDR
// hc_skills = [ skill , Rand ( 0 , skill ) , Rand ( 0 , skill ) , Rand ( 0 , skill ) ] ;
11398: LD_ADDR_OWVAR 31
11402: PUSH
11403: LD_VAR 0 3
11407: PUSH
11408: LD_INT 0
11410: PPUSH
11411: LD_VAR 0 3
11415: PPUSH
11416: CALL_OW 12
11420: PUSH
11421: LD_INT 0
11423: PPUSH
11424: LD_VAR 0 3
11428: PPUSH
11429: CALL_OW 12
11433: PUSH
11434: LD_INT 0
11436: PPUSH
11437: LD_VAR 0 3
11441: PPUSH
11442: CALL_OW 12
11446: PUSH
11447: EMPTY
11448: LIST
11449: LIST
11450: LIST
11451: LIST
11452: ST_TO_ADDR
// hc_class = 8 ;
11453: LD_ADDR_OWVAR 28
11457: PUSH
11458: LD_INT 8
11460: ST_TO_ADDR
// hc_name =  ;
11461: LD_ADDR_OWVAR 26
11465: PUSH
11466: LD_STRING 
11468: ST_TO_ADDR
// hc_gallery =  ;
11469: LD_ADDR_OWVAR 33
11473: PUSH
11474: LD_STRING 
11476: ST_TO_ADDR
// un = CreateHuman ;
11477: LD_ADDR_VAR 0 11
11481: PUSH
11482: CALL_OW 44
11486: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
11487: LD_VAR 0 11
11491: PPUSH
11492: LD_VAR 0 2
11496: PPUSH
11497: LD_INT 0
11499: PPUSH
11500: CALL_OW 49
// soldiers_list = soldiers_list ^ un ;
11504: LD_ADDR_VAR 0 12
11508: PUSH
11509: LD_VAR 0 12
11513: PUSH
11514: LD_VAR 0 11
11518: ADD
11519: ST_TO_ADDR
// end ;
11520: GO 11377
11522: POP
11523: POP
// for i = 1 to soldCount do
11524: LD_ADDR_VAR 0 10
11528: PUSH
11529: DOUBLE
11530: LD_INT 1
11532: DEC
11533: ST_TO_ADDR
11534: LD_VAR 0 4
11538: PUSH
11539: FOR_TO
11540: IFFALSE 11684
// begin uc_side = side ;
11542: LD_ADDR_OWVAR 20
11546: PUSH
11547: LD_VAR 0 1
11551: ST_TO_ADDR
// uc_nation = 2 ;
11552: LD_ADDR_OWVAR 21
11556: PUSH
11557: LD_INT 2
11559: ST_TO_ADDR
// hc_skills = [ skill , Rand ( 0 , skill ) , Rand ( 0 , skill ) , Rand ( 0 , skill ) ] ;
11560: LD_ADDR_OWVAR 31
11564: PUSH
11565: LD_VAR 0 3
11569: PUSH
11570: LD_INT 0
11572: PPUSH
11573: LD_VAR 0 3
11577: PPUSH
11578: CALL_OW 12
11582: PUSH
11583: LD_INT 0
11585: PPUSH
11586: LD_VAR 0 3
11590: PPUSH
11591: CALL_OW 12
11595: PUSH
11596: LD_INT 0
11598: PPUSH
11599: LD_VAR 0 3
11603: PPUSH
11604: CALL_OW 12
11608: PUSH
11609: EMPTY
11610: LIST
11611: LIST
11612: LIST
11613: LIST
11614: ST_TO_ADDR
// hc_class = 1 ;
11615: LD_ADDR_OWVAR 28
11619: PUSH
11620: LD_INT 1
11622: ST_TO_ADDR
// hc_name =  ;
11623: LD_ADDR_OWVAR 26
11627: PUSH
11628: LD_STRING 
11630: ST_TO_ADDR
// hc_gallery =  ;
11631: LD_ADDR_OWVAR 33
11635: PUSH
11636: LD_STRING 
11638: ST_TO_ADDR
// un = CreateHuman ;
11639: LD_ADDR_VAR 0 11
11643: PUSH
11644: CALL_OW 44
11648: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
11649: LD_VAR 0 11
11653: PPUSH
11654: LD_VAR 0 2
11658: PPUSH
11659: LD_INT 0
11661: PPUSH
11662: CALL_OW 49
// soldiers_list = soldiers_list ^ un ;
11666: LD_ADDR_VAR 0 12
11670: PUSH
11671: LD_VAR 0 12
11675: PUSH
11676: LD_VAR 0 11
11680: ADD
11681: ST_TO_ADDR
// end ;
11682: GO 11539
11684: POP
11685: POP
// for i = 1 to medicCount do
11686: LD_ADDR_VAR 0 10
11690: PUSH
11691: DOUBLE
11692: LD_INT 1
11694: DEC
11695: ST_TO_ADDR
11696: LD_VAR 0 6
11700: PUSH
11701: FOR_TO
11702: IFFALSE 11846
// begin uc_side = side ;
11704: LD_ADDR_OWVAR 20
11708: PUSH
11709: LD_VAR 0 1
11713: ST_TO_ADDR
// uc_nation = 2 ;
11714: LD_ADDR_OWVAR 21
11718: PUSH
11719: LD_INT 2
11721: ST_TO_ADDR
// hc_skills = [ Rand ( 0 , skill ) , Rand ( 0 , skill ) , Rand ( 0 , skill ) , skill ] ;
11722: LD_ADDR_OWVAR 31
11726: PUSH
11727: LD_INT 0
11729: PPUSH
11730: LD_VAR 0 3
11734: PPUSH
11735: CALL_OW 12
11739: PUSH
11740: LD_INT 0
11742: PPUSH
11743: LD_VAR 0 3
11747: PPUSH
11748: CALL_OW 12
11752: PUSH
11753: LD_INT 0
11755: PPUSH
11756: LD_VAR 0 3
11760: PPUSH
11761: CALL_OW 12
11765: PUSH
11766: LD_VAR 0 3
11770: PUSH
11771: EMPTY
11772: LIST
11773: LIST
11774: LIST
11775: LIST
11776: ST_TO_ADDR
// hc_class = 4 ;
11777: LD_ADDR_OWVAR 28
11781: PUSH
11782: LD_INT 4
11784: ST_TO_ADDR
// hc_name =  ;
11785: LD_ADDR_OWVAR 26
11789: PUSH
11790: LD_STRING 
11792: ST_TO_ADDR
// hc_gallery =  ;
11793: LD_ADDR_OWVAR 33
11797: PUSH
11798: LD_STRING 
11800: ST_TO_ADDR
// un = CreateHuman ;
11801: LD_ADDR_VAR 0 11
11805: PUSH
11806: CALL_OW 44
11810: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
11811: LD_VAR 0 11
11815: PPUSH
11816: LD_VAR 0 2
11820: PPUSH
11821: LD_INT 0
11823: PPUSH
11824: CALL_OW 49
// medic_list = medic_list ^ un ;
11828: LD_ADDR_VAR 0 13
11832: PUSH
11833: LD_VAR 0 13
11837: PUSH
11838: LD_VAR 0 11
11842: ADD
11843: ST_TO_ADDR
// end ;
11844: GO 11701
11846: POP
11847: POP
// for i = 1 to soldiers_list do
11848: LD_ADDR_VAR 0 10
11852: PUSH
11853: DOUBLE
11854: LD_INT 1
11856: DEC
11857: ST_TO_ADDR
11858: LD_VAR 0 12
11862: PUSH
11863: FOR_TO
11864: IFFALSE 11893
// begin ComAgressiveMove ( soldiers_list [ i ] , targetX , targetY ) ;
11866: LD_VAR 0 12
11870: PUSH
11871: LD_VAR 0 10
11875: ARRAY
11876: PPUSH
11877: LD_VAR 0 7
11881: PPUSH
11882: LD_VAR 0 8
11886: PPUSH
11887: CALL_OW 114
// end ;
11891: GO 11863
11893: POP
11894: POP
// for i = 1 to medic_list do
11895: LD_ADDR_VAR 0 10
11899: PUSH
11900: DOUBLE
11901: LD_INT 1
11903: DEC
11904: ST_TO_ADDR
11905: LD_VAR 0 13
11909: PUSH
11910: FOR_TO
11911: IFFALSE 11940
// begin ComContaminate ( medic_list [ i ] , targetX , targetY ) ;
11913: LD_VAR 0 13
11917: PUSH
11918: LD_VAR 0 10
11922: ARRAY
11923: PPUSH
11924: LD_VAR 0 7
11928: PPUSH
11929: LD_VAR 0 8
11933: PPUSH
11934: CALL_OW 158
// end ;
11938: GO 11910
11940: POP
11941: POP
// end ;
11942: LD_VAR 0 9
11946: RET
// export function AttackSelfBombs ( side , areaSpawn , targetSide , bombCount ) ; var i , veh , bomb_list , target ; begin
11947: LD_INT 0
11949: PPUSH
11950: PPUSH
11951: PPUSH
11952: PPUSH
11953: PPUSH
// for i = 1 to bombCount do
11954: LD_ADDR_VAR 0 6
11958: PUSH
11959: DOUBLE
11960: LD_INT 1
11962: DEC
11963: ST_TO_ADDR
11964: LD_VAR 0 4
11968: PUSH
11969: FOR_TO
11970: IFFALSE 12067
// begin uc_side = side ;
11972: LD_ADDR_OWVAR 20
11976: PUSH
11977: LD_VAR 0 1
11981: ST_TO_ADDR
// uc_nation = 2 ;
11982: LD_ADDR_OWVAR 21
11986: PUSH
11987: LD_INT 2
11989: ST_TO_ADDR
// vc_engine = 3 ;
11990: LD_ADDR_OWVAR 39
11994: PUSH
11995: LD_INT 3
11997: ST_TO_ADDR
// vc_control = 5 ;
11998: LD_ADDR_OWVAR 38
12002: PUSH
12003: LD_INT 5
12005: ST_TO_ADDR
// vc_weapon = 29 ;
12006: LD_ADDR_OWVAR 40
12010: PUSH
12011: LD_INT 29
12013: ST_TO_ADDR
// vc_chassis = 14 ;
12014: LD_ADDR_OWVAR 37
12018: PUSH
12019: LD_INT 14
12021: ST_TO_ADDR
// veh = CreateVehicle ;
12022: LD_ADDR_VAR 0 7
12026: PUSH
12027: CALL_OW 45
12031: ST_TO_ADDR
// PlaceUnitArea ( veh , areaSpawn , false ) ;
12032: LD_VAR 0 7
12036: PPUSH
12037: LD_VAR 0 2
12041: PPUSH
12042: LD_INT 0
12044: PPUSH
12045: CALL_OW 49
// bomb_list = bomb_list ^ veh ;
12049: LD_ADDR_VAR 0 8
12053: PUSH
12054: LD_VAR 0 8
12058: PUSH
12059: LD_VAR 0 7
12063: ADD
12064: ST_TO_ADDR
// end ;
12065: GO 11969
12067: POP
12068: POP
// for i = 1 to bomb_list do
12069: LD_ADDR_VAR 0 6
12073: PUSH
12074: DOUBLE
12075: LD_INT 1
12077: DEC
12078: ST_TO_ADDR
12079: LD_VAR 0 8
12083: PUSH
12084: FOR_TO
12085: IFFALSE 12147
// begin target := NearestUnitToUnit ( FilterAllUnits ( [ f_side , targetSide ] ) , bomb_list [ i ] ) ;
12087: LD_ADDR_VAR 0 9
12091: PUSH
12092: LD_INT 22
12094: PUSH
12095: LD_VAR 0 3
12099: PUSH
12100: EMPTY
12101: LIST
12102: LIST
12103: PPUSH
12104: CALL_OW 69
12108: PPUSH
12109: LD_VAR 0 8
12113: PUSH
12114: LD_VAR 0 6
12118: ARRAY
12119: PPUSH
12120: CALL_OW 74
12124: ST_TO_ADDR
// ComAttackUnit ( bomb_list [ i ] , target ) ;
12125: LD_VAR 0 8
12129: PUSH
12130: LD_VAR 0 6
12134: ARRAY
12135: PPUSH
12136: LD_VAR 0 9
12140: PPUSH
12141: CALL_OW 115
// end ;
12145: GO 12084
12147: POP
12148: POP
// end ;
12149: LD_VAR 0 5
12153: RET
// export mines_list ; export function create_minefield ; var i , xx , enemy ; begin
12154: LD_INT 0
12156: PPUSH
12157: PPUSH
12158: PPUSH
12159: PPUSH
// enemy = randomedColors [ 2 ] ;
12160: LD_ADDR_VAR 0 4
12164: PUSH
12165: LD_EXP 42
12169: PUSH
12170: LD_INT 2
12172: ARRAY
12173: ST_TO_ADDR
// mines_list := [ ] ;
12174: LD_ADDR_EXP 47
12178: PUSH
12179: EMPTY
12180: ST_TO_ADDR
// for i = 1 to 50 do
12181: LD_ADDR_VAR 0 2
12185: PUSH
12186: DOUBLE
12187: LD_INT 1
12189: DEC
12190: ST_TO_ADDR
12191: LD_INT 50
12193: PUSH
12194: FOR_TO
12195: IFFALSE 12268
// begin xx := RandHexArea ( MineFieldArea , false ) ;
12197: LD_ADDR_VAR 0 3
12201: PUSH
12202: LD_INT 16
12204: PPUSH
12205: LD_INT 0
12207: PPUSH
12208: CALL_OW 16
12212: ST_TO_ADDR
// PlaceMine ( xx [ 1 ] , xx [ 2 ] , enemy , 0 ) ;
12213: LD_VAR 0 3
12217: PUSH
12218: LD_INT 1
12220: ARRAY
12221: PPUSH
12222: LD_VAR 0 3
12226: PUSH
12227: LD_INT 2
12229: ARRAY
12230: PPUSH
12231: LD_VAR 0 4
12235: PPUSH
12236: LD_INT 0
12238: PPUSH
12239: CALL_OW 454
// mines_list := mines_list ^ xx ;
12243: LD_ADDR_EXP 47
12247: PUSH
12248: LD_EXP 47
12252: PUSH
12253: LD_VAR 0 3
12257: ADD
12258: ST_TO_ADDR
// wait ( 0 0$1 ) ;
12259: LD_INT 35
12261: PPUSH
12262: CALL_OW 67
// end ;
12266: GO 12194
12268: POP
12269: POP
// end ;
12270: LD_VAR 0 1
12274: RET
// export mine_xy , first_mine_exploded ; every 0 0$1 trigger FilterUnitsInArea ( MineFieldArea , [ [ f_side , sideP1 ] ] ) and mines_list do var un , list , mine , dist , pom_list ;
12275: LD_INT 16
12277: PPUSH
12278: LD_INT 22
12280: PUSH
12281: LD_EXP 43
12285: PUSH
12286: EMPTY
12287: LIST
12288: LIST
12289: PUSH
12290: EMPTY
12291: LIST
12292: PPUSH
12293: CALL_OW 70
12297: PUSH
12298: LD_EXP 47
12302: AND
12303: IFFALSE 12657
12305: GO 12307
12307: DISABLE
12308: LD_INT 0
12310: PPUSH
12311: PPUSH
12312: PPUSH
12313: PPUSH
12314: PPUSH
// begin list := FilterUnitsInArea ( MineFieldArea , [ [ f_side , sideP1 ] ] ) ;
12315: LD_ADDR_VAR 0 2
12319: PUSH
12320: LD_INT 16
12322: PPUSH
12323: LD_INT 22
12325: PUSH
12326: LD_EXP 43
12330: PUSH
12331: EMPTY
12332: LIST
12333: LIST
12334: PUSH
12335: EMPTY
12336: LIST
12337: PPUSH
12338: CALL_OW 70
12342: ST_TO_ADDR
// pom_list := [ ] ;
12343: LD_ADDR_VAR 0 5
12347: PUSH
12348: EMPTY
12349: ST_TO_ADDR
// for un in list do
12350: LD_ADDR_VAR 0 1
12354: PUSH
12355: LD_VAR 0 2
12359: PUSH
12360: FOR_IN
12361: IFFALSE 12654
// begin if GetType ( un ) = unit_human then
12363: LD_VAR 0 1
12367: PPUSH
12368: CALL_OW 247
12372: PUSH
12373: LD_INT 1
12375: EQUAL
12376: IFFALSE 12388
// dist := 3 else
12378: LD_ADDR_VAR 0 4
12382: PUSH
12383: LD_INT 3
12385: ST_TO_ADDR
12386: GO 12396
// dist := 4 ;
12388: LD_ADDR_VAR 0 4
12392: PUSH
12393: LD_INT 4
12395: ST_TO_ADDR
// for mine = 1 to ( mines_list div 2 ) do
12396: LD_ADDR_VAR 0 3
12400: PUSH
12401: DOUBLE
12402: LD_INT 1
12404: DEC
12405: ST_TO_ADDR
12406: LD_EXP 47
12410: PUSH
12411: LD_INT 2
12413: DIV
12414: PUSH
12415: FOR_TO
12416: IFFALSE 12633
// if GetDistXY ( mines_list [ ( mine * 2 ) - 1 ] , mines_list [ ( mine * 2 ) ] , GetX ( un ) , GetY ( un ) ) < dist then
12418: LD_EXP 47
12422: PUSH
12423: LD_VAR 0 3
12427: PUSH
12428: LD_INT 2
12430: MUL
12431: PUSH
12432: LD_INT 1
12434: MINUS
12435: ARRAY
12436: PPUSH
12437: LD_EXP 47
12441: PUSH
12442: LD_VAR 0 3
12446: PUSH
12447: LD_INT 2
12449: MUL
12450: ARRAY
12451: PPUSH
12452: LD_VAR 0 1
12456: PPUSH
12457: CALL_OW 250
12461: PPUSH
12462: LD_VAR 0 1
12466: PPUSH
12467: CALL_OW 251
12471: PPUSH
12472: CALL_OW 298
12476: PUSH
12477: LD_VAR 0 4
12481: LESS
12482: IFFALSE 12585
// begin LaunchMineAtPos ( mines_list [ ( mine * 2 ) - 1 ] , mines_list [ ( mine * 2 ) ] , 1 ) ;
12484: LD_EXP 47
12488: PUSH
12489: LD_VAR 0 3
12493: PUSH
12494: LD_INT 2
12496: MUL
12497: PUSH
12498: LD_INT 1
12500: MINUS
12501: ARRAY
12502: PPUSH
12503: LD_EXP 47
12507: PUSH
12508: LD_VAR 0 3
12512: PUSH
12513: LD_INT 2
12515: MUL
12516: ARRAY
12517: PPUSH
12518: LD_INT 1
12520: PPUSH
12521: CALL_OW 456
// if not first_mine_exploded then
12525: LD_EXP 49
12529: NOT
12530: IFFALSE 12583
// begin first_mine_exploded := true ;
12532: LD_ADDR_EXP 49
12536: PUSH
12537: LD_INT 1
12539: ST_TO_ADDR
// mine_xy := [ mines_list [ ( mine * 2 ) - 1 ] , mines_list [ ( mine * 2 ) ] ] ;
12540: LD_ADDR_EXP 48
12544: PUSH
12545: LD_EXP 47
12549: PUSH
12550: LD_VAR 0 3
12554: PUSH
12555: LD_INT 2
12557: MUL
12558: PUSH
12559: LD_INT 1
12561: MINUS
12562: ARRAY
12563: PUSH
12564: LD_EXP 47
12568: PUSH
12569: LD_VAR 0 3
12573: PUSH
12574: LD_INT 2
12576: MUL
12577: ARRAY
12578: PUSH
12579: EMPTY
12580: LIST
12581: LIST
12582: ST_TO_ADDR
// end ; end else
12583: GO 12631
// pom_list := pom_list ^ mines_list [ ( mine * 2 ) - 1 ] ^ mines_list [ ( mine * 2 ) ] ;
12585: LD_ADDR_VAR 0 5
12589: PUSH
12590: LD_VAR 0 5
12594: PUSH
12595: LD_EXP 47
12599: PUSH
12600: LD_VAR 0 3
12604: PUSH
12605: LD_INT 2
12607: MUL
12608: PUSH
12609: LD_INT 1
12611: MINUS
12612: ARRAY
12613: ADD
12614: PUSH
12615: LD_EXP 47
12619: PUSH
12620: LD_VAR 0 3
12624: PUSH
12625: LD_INT 2
12627: MUL
12628: ARRAY
12629: ADD
12630: ST_TO_ADDR
12631: GO 12415
12633: POP
12634: POP
// mines_list := pom_list ;
12635: LD_ADDR_EXP 47
12639: PUSH
12640: LD_VAR 0 5
12644: ST_TO_ADDR
// pom_list := [ ] ;
12645: LD_ADDR_VAR 0 5
12649: PUSH
12650: EMPTY
12651: ST_TO_ADDR
// end ;
12652: GO 12360
12654: POP
12655: POP
// enable ;
12656: ENABLE
// end ;
12657: PPOPN 5
12659: END
// every 0 0$1 trigger FilterUnitsInArea ( MineFieldArea , [ [ f_side , sideP2 ] ] ) and mines_list do var un , list , mine , dist , pom_list ;
12660: LD_INT 16
12662: PPUSH
12663: LD_INT 22
12665: PUSH
12666: LD_EXP 44
12670: PUSH
12671: EMPTY
12672: LIST
12673: LIST
12674: PUSH
12675: EMPTY
12676: LIST
12677: PPUSH
12678: CALL_OW 70
12682: PUSH
12683: LD_EXP 47
12687: AND
12688: IFFALSE 13042
12690: GO 12692
12692: DISABLE
12693: LD_INT 0
12695: PPUSH
12696: PPUSH
12697: PPUSH
12698: PPUSH
12699: PPUSH
// begin list := FilterUnitsInArea ( MineFieldArea , [ [ f_side , sideP2 ] ] ) ;
12700: LD_ADDR_VAR 0 2
12704: PUSH
12705: LD_INT 16
12707: PPUSH
12708: LD_INT 22
12710: PUSH
12711: LD_EXP 44
12715: PUSH
12716: EMPTY
12717: LIST
12718: LIST
12719: PUSH
12720: EMPTY
12721: LIST
12722: PPUSH
12723: CALL_OW 70
12727: ST_TO_ADDR
// pom_list := [ ] ;
12728: LD_ADDR_VAR 0 5
12732: PUSH
12733: EMPTY
12734: ST_TO_ADDR
// for un in list do
12735: LD_ADDR_VAR 0 1
12739: PUSH
12740: LD_VAR 0 2
12744: PUSH
12745: FOR_IN
12746: IFFALSE 13039
// begin if GetType ( un ) = unit_human then
12748: LD_VAR 0 1
12752: PPUSH
12753: CALL_OW 247
12757: PUSH
12758: LD_INT 1
12760: EQUAL
12761: IFFALSE 12773
// dist := 3 else
12763: LD_ADDR_VAR 0 4
12767: PUSH
12768: LD_INT 3
12770: ST_TO_ADDR
12771: GO 12781
// dist := 4 ;
12773: LD_ADDR_VAR 0 4
12777: PUSH
12778: LD_INT 4
12780: ST_TO_ADDR
// for mine = 1 to ( mines_list div 2 ) do
12781: LD_ADDR_VAR 0 3
12785: PUSH
12786: DOUBLE
12787: LD_INT 1
12789: DEC
12790: ST_TO_ADDR
12791: LD_EXP 47
12795: PUSH
12796: LD_INT 2
12798: DIV
12799: PUSH
12800: FOR_TO
12801: IFFALSE 13018
// if GetDistXY ( mines_list [ ( mine * 2 ) - 1 ] , mines_list [ ( mine * 2 ) ] , GetX ( un ) , GetY ( un ) ) < dist then
12803: LD_EXP 47
12807: PUSH
12808: LD_VAR 0 3
12812: PUSH
12813: LD_INT 2
12815: MUL
12816: PUSH
12817: LD_INT 1
12819: MINUS
12820: ARRAY
12821: PPUSH
12822: LD_EXP 47
12826: PUSH
12827: LD_VAR 0 3
12831: PUSH
12832: LD_INT 2
12834: MUL
12835: ARRAY
12836: PPUSH
12837: LD_VAR 0 1
12841: PPUSH
12842: CALL_OW 250
12846: PPUSH
12847: LD_VAR 0 1
12851: PPUSH
12852: CALL_OW 251
12856: PPUSH
12857: CALL_OW 298
12861: PUSH
12862: LD_VAR 0 4
12866: LESS
12867: IFFALSE 12970
// begin LaunchMineAtPos ( mines_list [ ( mine * 2 ) - 1 ] , mines_list [ ( mine * 2 ) ] , 1 ) ;
12869: LD_EXP 47
12873: PUSH
12874: LD_VAR 0 3
12878: PUSH
12879: LD_INT 2
12881: MUL
12882: PUSH
12883: LD_INT 1
12885: MINUS
12886: ARRAY
12887: PPUSH
12888: LD_EXP 47
12892: PUSH
12893: LD_VAR 0 3
12897: PUSH
12898: LD_INT 2
12900: MUL
12901: ARRAY
12902: PPUSH
12903: LD_INT 1
12905: PPUSH
12906: CALL_OW 456
// if not first_mine_exploded then
12910: LD_EXP 49
12914: NOT
12915: IFFALSE 12968
// begin first_mine_exploded := true ;
12917: LD_ADDR_EXP 49
12921: PUSH
12922: LD_INT 1
12924: ST_TO_ADDR
// mine_xy := [ mines_list [ ( mine * 2 ) - 1 ] , mines_list [ ( mine * 2 ) ] ] ;
12925: LD_ADDR_EXP 48
12929: PUSH
12930: LD_EXP 47
12934: PUSH
12935: LD_VAR 0 3
12939: PUSH
12940: LD_INT 2
12942: MUL
12943: PUSH
12944: LD_INT 1
12946: MINUS
12947: ARRAY
12948: PUSH
12949: LD_EXP 47
12953: PUSH
12954: LD_VAR 0 3
12958: PUSH
12959: LD_INT 2
12961: MUL
12962: ARRAY
12963: PUSH
12964: EMPTY
12965: LIST
12966: LIST
12967: ST_TO_ADDR
// end ; end else
12968: GO 13016
// pom_list := pom_list ^ mines_list [ ( mine * 2 ) - 1 ] ^ mines_list [ ( mine * 2 ) ] ;
12970: LD_ADDR_VAR 0 5
12974: PUSH
12975: LD_VAR 0 5
12979: PUSH
12980: LD_EXP 47
12984: PUSH
12985: LD_VAR 0 3
12989: PUSH
12990: LD_INT 2
12992: MUL
12993: PUSH
12994: LD_INT 1
12996: MINUS
12997: ARRAY
12998: ADD
12999: PUSH
13000: LD_EXP 47
13004: PUSH
13005: LD_VAR 0 3
13009: PUSH
13010: LD_INT 2
13012: MUL
13013: ARRAY
13014: ADD
13015: ST_TO_ADDR
13016: GO 12800
13018: POP
13019: POP
// mines_list := pom_list ;
13020: LD_ADDR_EXP 47
13024: PUSH
13025: LD_VAR 0 5
13029: ST_TO_ADDR
// pom_list := [ ] ;
13030: LD_ADDR_VAR 0 5
13034: PUSH
13035: EMPTY
13036: ST_TO_ADDR
// end ;
13037: GO 12745
13039: POP
13040: POP
// enable ;
13041: ENABLE
// end ; end_of_file
13042: PPOPN 5
13044: END
// every 0 0$10 trigger FilterAllUnits ( [ f_side , randomedColors [ 2 ] ] ) = 0 and FilterAllUnits ( [ f_side , randomedColors [ 3 ] ] ) = 0 do
13045: LD_INT 22
13047: PUSH
13048: LD_EXP 42
13052: PUSH
13053: LD_INT 2
13055: ARRAY
13056: PUSH
13057: EMPTY
13058: LIST
13059: LIST
13060: PPUSH
13061: CALL_OW 69
13065: PUSH
13066: LD_INT 0
13068: EQUAL
13069: PUSH
13070: LD_INT 22
13072: PUSH
13073: LD_EXP 42
13077: PUSH
13078: LD_INT 3
13080: ARRAY
13081: PUSH
13082: EMPTY
13083: LIST
13084: LIST
13085: PPUSH
13086: CALL_OW 69
13090: PUSH
13091: LD_INT 0
13093: EQUAL
13094: AND
13095: IFFALSE 13104
13097: GO 13099
13099: DISABLE
// begin YouWinInMultiplayer ;
13100: CALL_OW 106
// end ;
13104: END
